달리기 경주
·
코딩 테스트/프로그래머스
문제문제 풀이1. 처음에 시도한 방법은 callings에 있는 요소의 것을 players에서 찾아서 별도의 Swap함수와 인덱스를 찾기 위한 FindIDX 함수를 정의해서 반복문을 수행했다.-> 결과는 시간초과 케이스가 4개 발생해서 map을 사용하는 것이 올바르다 생각되었다.(IDX를 string과 쌍으로 엮으면 되니까) 2. 1의 결과를 토대로 map에 초기 등수를 넣어주고 callings의 요소대로 범위 기반 반복문을 수행했다. 반복문 내부에서는 불린 선수 앞의 선수(Left), 불린 선수(Right)의 등수를 찾아내고 이를 기반으로 players에서 문자열을 Swap, map에서의 값도 Swap해 주었다.-> 11번 테스트 케이스가 1.233초 걸렸다. 제일 큰 입력을 주는 것 같지만 시간초과되지..
대충 만든 자판
·
코딩 테스트/프로그래머스
문제문제 해석*. 처음에는 그냥 한번만 순회하면 되는 줄 알고 풀었다가 5분 정도 날려먹었다.1. 문자 1개가 각 키맵의 버튼을 대상으로 가장 작은 입력횟수를 찾아 입력횟수에 더해나간다.2. 만약 가장 작은 입력횟수를 찾아나갈 때, 해당하는 키가 존재하지 않는다면 targets의 해당 원소는 완성될 수 없다.3. 문자 1개씩 keymap의 각 원소에서 가장 작은 입력 횟수를 찾아나간다.4. 갱신이 안 되었다면 이 Target은 완성할 수 없다.코드#include #include #include using namespace std;constexpr int INT_MAX = numeric_limits::max();vector solution(vector keymap, vector targets) { v..
숫자 짝궁
·
코딩 테스트/프로그래머스
문제문제 해석1. 주어진 문자열에서 Pair(쌍)을 이루는 숫자를 찾는다.2. 찾아낸 숫자들을 조합하여 가장 큰 숫자를 문자열로 바꿔 반환한다. 코드성공한 코드더보기#include #include #include using namespace std;string solution(string X, string Y) { // X, Y의 각 숫자에 해당하는 문자 갯수를 찾아낸다 map XMap; map YMap; for(char CH : X) XMap[CH]++; for(char CH : Y) YMap[CH]++; string answer; // 문자의 키 값은 '0'~'9'인데, Pair를 이루려면 해당 키에 해당하는 값이 작은 쪽에 제한이 걸린다. // 가장..