목록코딩테스트/프로그래머스 (45)
Deff_Dev
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제의 조건은 다음과 같다.짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버립니다.홀수 인덱스에서는 arr에서 query[i]번 인덱스는 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버립니다.여기서 주의해야할 점은 여기서 얘기하는 짝수, 홀수 인덱스는 query[i]의 값이 아닌 i 값이라는 거다. 위 내용만 생각하면 문제 자체는 어렵진 않았다.#include using namespace std;bool IsEven(int num){ return num % 2 =..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제는 주어진 0 ~ 9 까지의 숫자들 중 없는 숫자를 더하고 반환하는 문제이다. 주어진 숫자들을 오름차순 정렬한 뒤, 없는 숫자를 찾는다.이때, 주어진 숫자가 8 이하 일 경우를 생각해서 9까지의 없는 숫자를 다시 한 번 찾는다.#include #include using namespace std;int solution(vector numbers) { int answer = 0, curNum = 0; sort(numbers.begin(), numbers.end()); for (int i = 0; i
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제는 num이 짝수 일 때는 num / 2를 하고, 홀수 일 때는 num * 3 + 1 규칙을 500번 적용시킨다 했을 때, 500번 안에 num이 1이 된다면 해당 규칙을 적용시킨 횟수를 반환하고, num이 1이 되지 않는다면 -1를 반환하는 문제이다. 쉬운 문제지만, num의 타입을 int가 아닌 long으로 변환한 뒤, 규칙을 적용시켜야 한다. (테스트 케이스 3번)using namespace std;int solution(int num) { if(num == 1) return 0; long n = num; for..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제는 철수와 동생이 롤케이크를 자르는 모든 경우의 수를 고려하여, 두 사람의 롤케이크 조각에 있는 토핑의 종류 수가 동일한 경우의 수를 모두 찾는 것이다. 해결 과정unordered_map을 사용하여 철수의 롤케이크 부분(leftCut)과 동생의 롤케이크 부분(rightCut)에 있는 각 토핑의 개수를 저장했다.초기 상태에서는 동생이 전체 롤케이크를 가지고 있다고 가정하고, 모든 토핑의 종류 수를 계산한다.그 다음, 철수가 왼쪽부터 한 조각씩 가져가는 것을 시뮬레이션하고, 철수가 전체 롤케이크를 가질 때까지 반복한다.각 단계에서 철수와 동생의 ..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제는 1 ~ 1000000 범위의 랜덤한 크기를 가지고 있는 귤을 k개 판매할 때, 판매한 귤 크기의 최소 갯수를 반환하는 문제이다. 난 맵을 이용하여 각 크기별 귤의 갯수를 구하고, value 기준으로 내림차순 정렬한 뒤, 갯수가 많은 크기의 귤 먼저 귤을 판매하여 귤 크기의 최소 갯수를 구했다.#include #include #include#includeusing namespace std;unordered_map boxMap;bool cmp (pair box01, pair box02){ return box01.second > box0..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제는 빵, 야채, 고기, 빵 순으로 햄버거를 몇 개 만들 수 있는지 반환하는 문제이다.즉, 1 >> 2 >> 3 >> 1 순서로 나오는 정수가 몇 개 있는지 찾으면 되는 문제이다. 한 가지 고려해야할 점은 햄버거가 만들어진다면 사용된 재료(숫자)들은 사라지고 밑에 깔려 있는 재료(숫자)들을 이용해서 햄버거를 만들 수 있다는 점이다. 예를들어, 빵, 야채, 빵, 야채, 고기, 빵, 고기, 빵 순서대로 있다면 만들 수 있는 햄버거의 갯수는 2개이다. 빵 (1), 야채 (2), 고기 (1) 빵빵, 야채빵, 야채, 빵빵, 야채, 빵, 야채빵, 야채,..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제는 주어진 각 벡터의 숫자들을 2진수로 만든 뒤, 각 자리를 비교하여 1이 하나라도 있으면 '#' 둘 다 0이라면 ' '를 넣는 문제다.#include #include using namespace std;int idx;int GetMatchNum (int count){ int n = 1; for(int i = 0;i = 0; i--){ int match = GetMatchNum(i); if(num >= match){ str += '1'; num -= match; ..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이 문제는 출발지 → 레버 위치 → 도착지까지의 최소 시간을 구하는 문제이다. BFS를 이용하여 각 위치까지의 최소 시간을 구한 뒤, 더한 값을 반환하는 방법으로 풀이했다.#include #include #include using namespace std;int map[101][101];int copyMap[101][101];int dx[4] = {1 ,-1, 0,0};int dy[4] = {0,0,1,-1};int n, m;pair leverPair;pair exitPair;pair startPair;void ResetMap(){ for(in..