Algorithm
-
[Algorithm] 프로그래머스 C++ : 디스크 컨트롤러Algorithm 2020. 8. 14. 23:48
https://programmers.co.kr/learn/courses/30/lessons/42627# 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를�� programmers.co.kr " 매번 하나의 태스크가 완수될 때마다, 그 시간 안에 요청된 대기열들을 pq에 추가하고 현재 time이 증가한다." 라는 알고리즘은 설정을 했었는데, 코딩이 잘 안됐다. 반복문을 어떻게 해야 효율적으로 할 수 있는지 캐치를 못했는데 while 하나를 쓰고 제일 처음에 등장하는 if&continue로 불필요한 추가적인 반복문을 제외시킬 수 있다는 것을..
-
[Algorithm] 프로그래머스 C++ : 더 맵게Algorithm 2020. 8. 10. 16:27
https://programmers.co.kr/learn/courses/30/lessons/42626# 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같�� programmers.co.kr 우선순위큐 개념만 알면 쉽게 풀 수 있는 문제 pq는 우선순위큐이기 때문에 push를 하면 안에서 자동으로 오름차순으로 정렬되고 저장된다 그래서 그냥 도달해야하는 스코빌 지수가 될 때까지 while을 돌리면서 top값(우선순위큐의 맨 앞에 있는 값)을 만지면서 계산하고 새로운 스코빌 지수를 push해주면 된다 Code #include #incl..
-
[Algorithm] 프로그래머스 C++ : 프린터Algorithm 2020. 8. 9. 02:08
https://programmers.co.kr/learn/courses/30/lessons/42587# 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린�� programmers.co.kr 그냥 프린터의 인덱스를 스택에 넣고 조건에 맞게 push&pop하면 된다. (우선순위값은 priorities[index]이런 식으로 접근하여 비교) 초반에 몇개 놓쳤다가 다시 생각한게 우선순위가 높은 출력물이 출력이 된 이후(큐에서 pop된 이후)에 가장 큰 우선순위값을 다시 구해줘야 한다는 점! 그래서 while가지고 최댓값을 매번 pop 할 때마다 구해줬다..
-
[Algorithm] 프로그래머스 C++ : 다리를 지나는 트럭Algorithm 2020. 8. 7. 01:22
https://programmers.co.kr/learn/courses/30/lessons/42583# 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이�� programmers.co.kr 되게 헤맸던 문제.. 그냥 봤을땐 쉬워보이는데 큐에 넣으면서 초를 세는게 헷갈린다. 첫번째 포인트는, while(1)을 해놓고 다리에 올라갈 수 없는 트럭이 나오면 그냥 0을 큐에 삽입해서 초가 증가할 수 있게 해주는 것! 두번째 포인트는, 다리에 올라갈 수 있는 트럭이 꽉 차서 큐의 맨 앞 트럭을 뺌과 동시에 다리에 올라가 있는 총 트럭의..
-
[Algorithm] 프로그래머스 C++ : 기능개발Algorithm 2020. 8. 6. 01:08
https://programmers.co.kr/learn/courses/30/lessons/42586# 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 �� programmers.co.kr 먼저, 첫번째 for문에서 각 기능들이 며칠만에 개발이 되는지 계산하여 days 벡터에 넣어준다. 그리고 일단 첫번째 기능 개발 시간은 비교 대상이 없으니 그냥 큐에 넣는다. 이후 days 요소들을 하나씩 보면서 만약 큐의 front() 값보다 작다면, 첫번째 기능과 함께 배포될 수 있으므로 큐에 삽입한다. 만약 큐의 front() 값보다 크면 함..
-
[Algorithm] 프로그래머스 C++ : 주식가격Algorithm 2020. 8. 5. 03:06
https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 그냥 for문 두개 돌려서 비교하는데, break; 조건을 줘서 시간을 줄였다. Code #include #include using namespace std; vector solution(vector prices) { vector answer(prices.size()); for(int i=0; i
-
[Algorithm] 프로그래머스 C++ : 베스트앨범Algorithm 2020. 7. 14. 03:01
https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 �� programmers.co.kr 매우 고려하기 복잡했던 문제 나는 일단 내가 원하는 대로 vector를 만들어서 하나씩 정렬해갔다. 주어진 genres, plays를 하나로 합친 vector => v v의 형식은 (플레이횟수, (고유번호, 장르))로 했다. v를 sort로 정렬하게 되면, 플레이 횟수로 v가 정렬된다. 나중에 "장르 내에서 많이 재생된 노래를 먼저 수록합니다." 조건을 ..
-
[Algorithm] 프로그래머스 C++ : 위장Algorithm 2020. 7. 12. 17:48
https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 그냥 수학 계산으로 풀면 됨. 일단 map을 사용해서 각 옷의 종류마다 몇 벌이 있는지 세고 각 (벌+1)을 다 곱하고 마지막에 1만 빼주면 answer. ** m.find(i[1]) == m.end() 이면 없는 key값이라는 것 명심 Code #include #include #include #include using namespace std; int solution(vector clothes) { int answer = 1; map m; for(auto i : clothes){ if(m.find(i[1]) == m.end()) { m.inser..