반응형

알고리즘 문제/프로그래머스 151

프로그래머스 귤 고르기 [Lv. 2] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr상자에 담으려는 귤의 개수 K와 귤의 각 크기를 담은 배열을 입력 받을 때,  경화가 귤 k개를 고를 때 크기가 서로 다른 종류의 수의 최솟값을 구해주세요.  풀이 방법귤의 종류의 개수를 기준으로 내림차순 정렬 후, 순서대로 개수를 더하여 K개를 넘는 위치가 어디있지 찾으면 됩니다. 1. map을 이용하여 귤 종류별 개수를 찾아줍니다.map t;for (int n : tangerine) t[n]++; 2. map에 있는 데이터를 vector로 옮긴 후 개수를 기준으로 내림차순 정렬을 합니다.vector> v;for (auto p : t) v.pus..

프로그래머스 마법의 엘리베이터 [Lv. 2] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr1 ~ 100,000,000의 수를 입력 받을 때, -1, +1, -10, +10, -100, +100 등과 같이 절댓값이 10c (c ≥ 0 인 정수) 형태인 정수들을 더하여 0을 만드는 최소 비용을 구해주세요.  풀이 방법각 자리수 별로 0으로 만들어 주는 최소 비용을 구해주고 모두 더해주면 됩니다.ex) 1234를 입력 받은 경우4 -> +6 or -43 -> +7 or -32 -> +8 or -21 -> +9 or -1 자리수별 최소비용을 구한 후 더해주면 모두 해결이 될 것 같지만한 가지 문제가 발생합니다. +기호를 이용하여 자리수를 0으로 만들어주..

프로그래머스 무인도 여행 [Lv. 2] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr지도를 나타낸는 문자열 maps가 매개변수로 주어질 때, 각 섬에서 최대 며칠씩 머무를 수 있는지 배열에 오름차순으로 담아 return 하는 solution 함수를 완성해주세요. result : [1, 1, 27]  풀이 방법BFS나 DFS를 이용해서 연결되어 있는 섬을 찾은 후연결된 섬들의 머물 수 있는 시간을 배열에 담아줍니다.이후 정렬하여 반환하여 마무리합니다. BFS 코드int dy[4] = {1, -1, 0, 0};int dx[4] = {0, 0, 1, -1};int BFS(vector& maps, vector>& visited, int y, int..

프로그래머스 리코쳇 로봇 [Lv. 2] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr로봇의 위치를 목표지점까지 옮기는 게임입니다. 로봇을 목표 지점까지 옮기는 가장 적은 비용을 찾아주세요.(로봇을 이동시킬 때는 벽이나, 장애물에 닿을 때까지 이동해야 합니다.)  풀이 방법DFS를 이용해서 풀이합니다. 좌,우로 이동하는 경우와 위,아래로 이동하는 모든 경우의 수를 탐색해줍니다.// (좌 우 위 아래) 4방향 탐색for (int i = 0; i = 0 && nx + dx[i] = 0 && board[ny + dy[i]][nx + dx[i]] != 'D') { ny += dy[..

프로그래머스 호텔 대실 [Lv. 2] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 예약 시각이 문자열 형태로 담긴 2차원 배열 book_time이 매개변수로 주어질 때, 코니에게 필요한 최소 객실의 수를 return 하는 solution 함수를 완성해주세요.  풀이 방법"겹치는 예약"을 찾고 "최대로 겹치는 방의 개수"를 찾아서 출력하면 되는 문제입니다. 1. string으로 입력받은 예약 시간을 인덱싱이 가능하도록 int로 바꿔줍니다.int ttoi(string time, bool isEnd = false){ int ret = isEnd ? 9 : 0; // (청소시간 포함하여 9) ret += time[4] - '0'; ..

프로그래머스 숫자의 표현 [Lv. 2]

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr숫자를 입력받을 때, 연속된 숫자의 합으로 입력받은 수를 만들 수 있는 경우의 수를 찾아주세요. 풀이 방법연속된 수를 찾는 것이기 때문에 수열의 범위를 조절하는 투 포인터 알고리즘을 이용할 수 있겠습니다. N이 15일 때, 1부터 시작하여 모든 수를 합해줍니다.[1, 2, 3, 4, 5] = 15수의 합이 15가 나온다면 answer을 하나 늘려주고 다음 수를 추가합니다. [1, 2, 3, 4, 5, 6] = 21수의 합이 15보다 크기 때문에 15보다 작거나 같은 수가 될 때 까지 앞의 수를 제거합니다. [4, 5, 6] = 15수의 합이 15이기 때문에 ..

프로그래머스 미로 탈출 [Lv. 2] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr미로를 나타낸 문자열 배열 maps가 매개변수로 주어질 때, 미로를 탈출하는데 필요한 최소 시간을 return 하는 solution 함수를 완성해주세요.   풀이 방법시작 지점에서 출구로 가는 가장 짧은 길을 찾을 때, 레버를 반드시 거쳐서 가야합니다.그렇기 때문에 입구 -> 출구의 거리만 찾는게 아니라 입구->레버의 거리와 레버->출구까지의 거리를 찾고 두 거리를 더해서 반환해주면 됩니다. int solution(vector maps) { int answer = 0; pair sPos, lPos, ePos; for (int i..

프로그래머스 행렬 테두리 회전하기 [Lv. 2] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr행렬의 부분 행렬을 만들고 테두리를 회전시킬 때, 회전된 값 중 가장 작은 값은 무엇인지 찾아주세요.  풀이 방법테두리를 회전시키는 로직은 deque를 이용하면 쉽게 해결이 가능합니다. 테두리를 순회하며 시계방향으로 값을 넣어준 후, deque의 가장 뒤에 있는 값을 앞으로 다시 넣어주면 됩니다.deque dq;vector> pos;for (int i = sx; i = sx; i--){ dq.push_back(table[ey][i]); pos.push_back({ey, i});}for (int i = ey-1; i >= sy+1; i--){ ..

프로그래머스 줄 서는 방법 [Lv. 2] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 사람의 수 n과, 자연수 k가 주어질 때, 사람을 나열 하는 방법을 사전 순으로 나열 했을 때, k번째 방법을 return하는 solution 함수를 완성해주세요.  풀이 방법n명의 사람을 나열하는 경우의 수를 오름차순 했을 때, 1번부터 ~ k번까지 모두 찾는 방법은 속도에서 문제가 발생합니다때문에 k번째의 사람을 한번에 찾는 방법을 사용합니다.  4명의 사람이 있을 때, 1번이 가장 앞에 있는 경우는 3 * 2 * 1번 까지입니다. [1, 2, 3, 4][1, 2, 4, 3][1, 3, 2, 4][1, 3, 4, 2][1, 4, 2, 3][1, 4, 3..

프로그래머스 디펜스 게임 [Lv.2] (C++)

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 준호가 처음 가지고 있는 병사의 수 n, 사용 가능한 무적권의 횟수 k, 매 라운드마다 공격해오는 적의 수가 순서대로 담긴 정수 배열 enemy가 매개변수로 주어집니다. 준호가 몇 라운드까지 막을 수 있는지 return 하도록 solution 함수를 완성해주세요.   풀이 방법디펜스 게임 문제는 무적권을 어디서 사용해야 하는가에 있습니다.그렇기 때문에 순차적으로 진행해야하는 유저의 입장에서 생각하면 풀이가 불가능합니다. 유저의 입장에서 순차적으로 게임을 진행해 보면, "아 그때, 무적권을 써야 했구나~"라는 순간이 옵니다.해당 문제는 "그 때, 무적권을 썼..

반응형