본문 바로가기
반응형

Algorithm17

[프로그래머스] 코딩테스트 고득점 Kit > K번째수 # 문제 # 문제 접근 문제 설명이 곧 풀이 방법이다. 문제만 잘 읽으면 되고, commads 에서 i, j, k를 획득하여 입력 array를 자르고 정렬하는 것이 주 포인트이다. # 문제 풀이 문제 설명에 문제를 푸는 방법이 전부 나와있다. i, j, k의 의미에 대해서 이해를 한다면 어렵지 않게 문제를 풀 수 있다. 1. 원본 입력 array를 보존해야 한다. 2. commands를 순회하면서 현재의 i, j, k를 구한다. 3. 원본 array를 i~j 까지 슬라이싱하고 정렬한다. 4. 위에서 얻은 리스트의 k번째 수를 결과 리스트에 담는다. # 코드 작성 def solution(array, commands): answer = [] for command in commands : // 현재 comma.. 2020. 3. 7.
[프로그래머스] 코딩테스트 고득점 Kit > 베스트앨범 # 문제 # 문제 접근 정답을 도출하기 위해 필요한 것은 가장 많이 재생 된 장르의 순서 / 장르별로 포함 된 노래의 재생 횟수 ,노래의 고유 번호 가장 많이 재생 된 장르의 순서를 알기 위해선, "장르" : "총 재생된 횟수" 가 필요하다. 장르별로 포함 된 노래의 재생 횟수를 알기 위해선, "장르" : "노래의 재생 횟수 리스트" 가 필요하다. 장르별로 포함 된 노래의 고유 번호를 알기 위해선, "장르" : "노래 고유 번호 리스트" 가 필요하다. 위를 딕셔너리로 구조화 시키면, { "장르" : { "총 재생 횟수" : N, "노래 리스트" : (재생 횟수, 고유 번호) } } 와 같이 만들 수 있다. # 문제 풀이 1. 위에서 구조화한 딕셔너리를 만들기 위해 빈 딕셔너리를 생성한다. 2. genre.. 2019. 11. 5.
[프로그래머스] 코딩테스트 고득점 Kit > 위장 # 문제 # 문제 접근 문제를 읽고 처음 입출력 예를 보고 나면 의상의 종류와 의상들을 묶어서 가능한 조합들을 모두 구하면 되겠다고 생각할 수 있다. 하지만 조금만 생각해보면 의상의 종류와 그 종류가 몇 개의 의상이 있는지만 알면 경우의 수를 구할 수 있다. 또한 같은 이름을 가진 의상이 존재하지 않기 때문에 별다른 예외처리도 필요 없음을 짐작할 수 있다. 따라서 의상의 종류가 "키"가 되고 의상의 개수가 "값"이 되는 딕셔너리를 생성하여 문제를 풀 수 있을 것이다. # 문제 풀이 1. "의상의 종류 : 의상의 개수" 의 구조를 가진 딕셔너리를 생성한다. 2. clothes 리스트를 순회하며 딕셔너리에 저장한다. 3. 딕셔너리를 순회하며 경우의 수를 구하여 반환한다. 4. 경우의 수를 구하는 것은 수학적.. 2019. 11. 5.
[프로그래머스] 코딩테스트 고득점 Kit > 전화번호 목록 # 문제 # 문제 접근 phone_book의 길이가 1,000,000 이기 때문에 이중루프로 돌면 시간초과가 날 것이 분명하기 때문에 다른 방법을 생각해야 한다. A 번호가 B 번호의 접두어 이려면, B번호에서 앞에서부터 A번호 만큼의 길이를 잘라낸 부분이 A와 동일해야 한다. phone_book을 순회하며 한 전화번호를 앞에서부터 잘라가며 접두어 리스트를 만들어 놓고 있는지 없는지 판별하면 될 것 같다. 그런데 생각해보니 단순히 리스트면 시간초과가 날 것 같으니, 읽는 속도가 빠른 set을 사용하도록 하자. # 문제 풀이 1. 접두어들을 저장할 set을 만든다. 2. phone_book 리스트를 순회하며 전화번호의 앞에서부터 1글자, 2글자, .. N글자 까지의 접두어를 위의 set에 저장한다. 3. .. 2019. 11. 5.