목록코딩테스트 (122)
Deff_Dev
문제 프로그래머스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..

문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이 이 문제는 포켓몬스터 골드버전 얼음 동굴 퍼즐과 동일한 매커니즘을 가진 문제다. 리코쳇 로봇은 상하좌우로 움직일 수 있고, 한 방향으로 움직일 시, 벽에 닿을 때까지 계속 해당 방향으로 움직인다.이때, R에서 로봇이 출발 할 때, G에 도착하는 최소 이동 횟수를 반환하는 문제이다. 난 BFS를 이용하여 해당 문제를 풀이했다.#include #include #include #include using namespace std;int map[101][101];bool visited[101][101];int n,m;pair startPos;pair en..
문제 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이이 문제는 (s, e) 좌표로 떨어지는 폭격 미사일들을 최소한의 요격 미사일로 막아야하는 문제이다. 문제 설명2차원 공간에서 x축에 평행한 선분으로 표현되는 폭격 미사일들을 최소한의 요격 미사일로 모두 요격해야 한다.요격 미사일은 특정 x 좌표에서 발사되어 해당 좌표를 지나는 모든 폭격 미사일을 동시에 요격할 수 있으며, 이를 통해 모든 폭격 미사일을 요격하는 데 필요한 최소 요격 미사일 수를 구해야 한다.문제 풀이targets의 요소들을 s 축 기준으로 오름 차순 정렬 한다.targets 요소들을 순차적으로 탐색하여 end 변수에 e 값의 최솟값..