문제 링크 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 �� programmers.co.kr 풀이 주석으로 많이 표시해놓았지만, 요약하면 다음과 같다. // init 1. map(중복X)로 장르당 총 횟수를 저장 2. 동시에, multimap(중복O)으로 장르당 고유번호를 저장 // 사전처리 - map(중복X)에 장르(string)로 사전 순으로 정렬돼있으므로 횟수 순으로 정렬을 바꿔주기 위한 처리 1. 횟수당 장르로 map으로 다시 저장 - 횟수순으로 알아서 오름차순 정렬된다, 횟수는 고유하다고 문제에 나와있다. 2. vector 컨..
문제 링크 코딩테스트 연습 - 위장 programmers.co.kr 풀이 중복되지 않는 map 컨테이너를 이용해서 갯수를 하나씩 증가시켰다(해당 key에 대해 횟수 증가하기 좋은 컨테이너) 그리고 (종류1 집합(공집합 포함) * 종류2 집합(공집합 포함) * .... = 다른 종류로 입을 수 있는 가짓수) 가 나오며 공집합끼리 겹쳐있는 것을 제외하기 위해 (-1)을 하였다. 공집합 = 안입는 경우 더보기 #include #include #include using namespace std; int solution(vector clothes) { int answer = 1; map m; for(auto e: clothes) m[e[1]]++; for(auto i=m.begin(); i!=m.end(); i+..
문제 링크 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조�� programmers.co.kr 풀이 string은 정렬하면 사전 순으로 정렬되므로 정렬하고 전의 원소가 접두어인 경우를 알 수 있다. 이를 이용... 풀이가 너무 짧... 더보기 #include #include #include using namespace std; bool solution(vector phone_book) { bool answer = true; sort(phone_book.begin(), phone_book.end()); // 정렬 for(int i=1; i
문제 링크 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수�� programmers.co.kr 풀이 completion 컨테이너에 있는 갯수가 하나 적으므로 무작위로 돼있는 원소들을 정렬한다 이후 원소들을 비교하면서 없는게 있다면 완주하지 못한 선수다.(참가자의 원소를 return) 더보기 #include #include #include using namespace std; string solution(vector participant, vector completion) { string answer = ""; sort(p..