문제 링크 코딩테스트 연습 - 두 개 뽑아서 더하기 programmers.co.kr 풀이 다양한 답이 있겠지만 중복 제거+오름차순해주는 것은 map이 너무 편하기 때문에 사용했다. 모든 조합에 대해서 map에 push해주고 다시 map을 순회하면서 answer에 push해준다. 더보기 #include #include #include using namespace std; vector solution(vector numbers) { vector answer; map m; // 중복 제거 + 오름차순 정렬용 for(int i=0; i
문제 링크 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 풀이 문제 이해하기 힘들면 위키백과 보기를 추천합니다.(제가 그럼...) 생각해보면, h-index를 한정 짓는 것은 논문을 편찬한 개수이다. 따라서 인용된 횟수랑 비교하면서 논문을 편찬한 개수를 줄여나가면서 h-index의 최대를 구할 수 있다. 따라서 코드를 요약하자면, citations을 오름차순으로 정렬하여 원소값과 비교하면서 순회한다.(인용된 횟수랑 비교하기 위해서) i 번째 원소(논문 인용횟수) 이상인 원소(..
문제 링크 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 �� programmers.co.kr 풀이 브루트-포스 문제다. 요약하자면, 포기자1, 포기자2, 포기자3의 찍는 패턴을 미리 string형으로 저장 후, 맞은 개수만큼 count를 증가시킨다. 이후, 최고 갯수를 구한다음 동점자가 있을 것을 예상해서 최고 갯수와 같은 포기자들을 answer 컨테이너에 넣어준다. 더보기 #include #include using namespace std; // 1, 2, 3, 4, 5 // 2, 1, 2, 3, 2, 4, 2, 5 // 3, 3, 1..
문제 링크 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 풀이 간단한 문제였다. 요약하자면, vector v를 선언하고 공간을 reserve()로 예약한 후, 해당하는 범위를 v에 할당했다. 이후, sort()로 오름차순으로 정렬 후, 해당 index를 answer 컨테이너에 넣어주었다. 더보기 #include #include #include #include using namespace std; vector solution(vector array, vector commands) { vector answer; for(int i=0; i
문제 링크 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 �� programmers.co.kr 풀이 큐를 사용하였다. 요약하자면, // init 남은 일수에 대해서 모두 큐에 넣어줌. // process 반복문 - 큐가 빌 때까지 { 해당 큐의 맨 앞 원소값를 "cur" 변수에 저장 반복문 - 큐가 빌 때까지 { 해당 큐에 "cur" 변수보다 작을 때까지 pop()하면서 count를 센다. } } 더보기 #include #include #include using namespace std; // 먼저 배포되어야 하는 순서의 진도율 p..
문제 링크 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 풀이 스택/큐 파트에 있었지만 반복문 2개로 풀었다. 요약하자면, 현재 원소가 앞에 원소보다 커진다면 answer 컨테이너에 현재 해당 인덱스 - 각 원소들 인덱스로 넣어주었다. 현재 해당 인덱스 - 각 원소들 인덱스 = 각 원소들이 떨어질 때까지 걸린 기간 더보기 #include #include using namespace std; vector solution(vector prices) { vector ans..
문제 링크 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 �� programmers.co.kr 풀이 완전 탐색으로 나열해놓고 풀까 하다가 갑자기 떠올랐다... 1. 원소는 1000이하이므로 무조건 3글자 이상으로 비교되도록 글자 수를 3번 반복해서 v에 넣어준다. (한 글자짜리가 3글자로 비교되도록) 2. 정렬할 때는 reverse_iterator 이용해서 사전 순 반대로 정렬했다. (사전 순 반대로 정렬되도록) 3. answer에 큰 순서대로 저장되도록 더해준다. 주의! 0..
문제 링크 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 �� programmers.co.kr 풀이 주석으로 많이 표시해놓았지만, 요약하면 다음과 같다. // init 1. map(중복X)로 장르당 총 횟수를 저장 2. 동시에, multimap(중복O)으로 장르당 고유번호를 저장 // 사전처리 - map(중복X)에 장르(string)로 사전 순으로 정렬돼있으므로 횟수 순으로 정렬을 바꿔주기 위한 처리 1. 횟수당 장르로 map으로 다시 저장 - 횟수순으로 알아서 오름차순 정렬된다, 횟수는 고유하다고 문제에 나와있다. 2. vector 컨..