본문 바로가기

Algorithm/Programmers37

[고득점 Kit(힙)] 디스크 컨트롤러 (Swift, Python) 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 풀이 먼저 입력으로 주어진 jobs에 대해서 작업이 요청되는 시점순으로 정렬하고 작업이 요청되는 시점이 같다면 작업의 소요시간을 기준으로 오름차순으로 정렬한다. 현재 시간 이전에 요청된 작업들을 toDoJobs 힙에 넣어주고 작업 소요시간이 가장 짧은 작업을 먼저 수행한다. 그 후 다시 현재 시간에 수행할 수 있는 작업들을 찾아서 toDoJobs 힙에 넣어주고 다시 작업 소요시간이 가장 짧은 작업을 수행한다. 위와 같은 작업을 반복한 뒤 입력으로 주어진 j.. 2022. 1. 28.
[고득점 Kit(힙)] 더 맵게 (Python) 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 최소힙을 사용하여 해결할 수 있다. 최소힙에서 두 개를 pop해서 문제에서 주어진 식대로 계산하여 다시 힙에 넣어주면 된다. 이때 첫번째로 꺼낸 값이 K이상이면 나머지 값도 전부 K이상이라는 의미이므로 진행을 중단한다. 마지막에 한 번 더 heap에서 값을 꺼내어 해당 값이 K 이상인가를 체크했는데 이는 마지막으로 heap에 두 개의 값이 남아있고 해당 값을 주어진 식대로 계산하여 K이상을 만족하게 됐을 때를 체크 하기 위해 추가하였다. 코드 .. 2022. 1. 27.
[고득점 Kit(해시)] 베스트앨범 (Swift, Python) 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 풀이 두 개의 사전을 만들어 하나는 각 장르별 총 재생된 횟수를 담아두고 나머지 하나에는 각 장르별의 각 곡의 재생 횟수와 고유 번호를 담아두었다. 총 재생된 횟수를 담아놓은 사전을 정렬하여 많이 재생된 순으로 장르를 갖고 와서 해당 장르의 곡들중에서 가장 많이 재생된 곡을 2개 뽑아서 answer 배열에 담아준다. 코드 [Swift] import Foundation func solution(_ genres:[String], _ plays:[Int]) -> [.. 2022. 1. 26.
[고득점 Kit(해시)] 위장 (Swift, Python) 코딩테스트 연습 - 위장 programmers.co.kr 풀이 옷의 종류를 key로 하고 해당 종류에 몇 가지 의상이 있는지를 담아주는 사전을 하나 만든다. 그 후 종류별로 갖고 있는 의상의 개수에 +1을 해주어 서로 곱해주어 조합할 수 있는 경우의 수를 구해주면 된다. +1은 해당 종류의 의상을 입지 않았을 때를 의미한다. 이렇게 구한 값에 -1을 해주어 리턴하면 되는데 이는 모든 종류의 의상을 입지 않았을 때의 경우의 수를 제거해주는 것이다. 코드 [Swift] import Foundation func solution(_ clothes:[[String]]) -> Int { var clothesDict: [String: Int] = [:] // 의상의 종류를 key로 하는 dictionary var a.. 2022. 1. 24.
[고득점 Kit(해시)] 전화번호 목록 (Python) 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 풀이 입력받은 전화번호 목록을 먼저 정렬해주고 i-1번째 전화번호가 i번째 전화번호의 접두사인지를 체크해주면 된다. 코드 HTML 삽입 미리보기할 수 없는 소스 2022. 1. 22.
[고득점 Kit(해시)] 완주하지 못한 선수 (Python) 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 풀이 참여한 선수들을 사전에 추가한다. 동명이인이 있을 수 있으므로 참여한 선수의 이름을 key로 하고 value는 해당 이름을 카운트 한 값으로 설정한다. 그 후 완주한 선수들을 사전에서 찾아서 value를 하나씩 줄여준다. 마지막에 사전을 탐색하는데 value가 0이 아닌 선수가 완주하지 못한 선수이므로 해당 선수의 이름을 return 해주면 된다. 코드 HTML 삽입 미리보기할 수 없는 소스 2022. 1. 20.