본문 바로가기

파이썬/프로그래머스 코딩테스트4

[3단계] hash, 베스트앨범 1. 속한 노래가 많이 재생된 장르를 먼저 수록 {장르: 장르에 속한 노래들의 총 재생 횟수}를 만든다. 추후 value를 기준으로 장르를 정리할 것이다. 2. 장르 내에서 많이 재생된 노래를 먼저 수록 장르 내에 속하므로 전체는 장르로 구분하며, 노래는 고유 번호로 구분하고자 {장르: [고유번호, 재생 횟수]}로 생성한다. 장르와 노래는 1:N 관계이므로 리스트 형태로 값을 추가하겠다. sum_genres = collections.defaultdict(int) dic_total = collections.defaultdict(list) for genre, value in zip(genres, enumerate(plays)): sum_genres[genre] += value[1] dic_total[genr.. 2022. 3. 3.
[2단계] hash, 위장 Q. 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. clothes의 모든 원소는 문자열로 이루어져 있습니다. 모든 문자열의 길이는 1 이상 20 이하인 자연수이고 알파벳 소문자 또는 '_' 로만 이루어져 있습니다. 스파이는 하루에 최소 한 개의 의상은 입습니다. 문제 풀이 1) 해시 테이블로 변환 clothes = [[1, 모자], [2, 모자], [4, 하의], [5, 상의], [6, 상의]]가 주어졌다고 했을 때, 의상 종류 별로 이름을 구분하기 위해 hash table을 만든다. 종류에 해당하는 이름(valu.. 2022. 3. 2.
[1단계] 2016년 [1단계] '2016년' 문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요. 제한 조건 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 문제 풀이 def solution(a, b): day = ['FRI','SAT','SUN','MON','TUE','WED','THU'] month = [31.. 2020. 3. 9.
[1단계] '제일 작은 수 제거하기' [1단계] '제일 작은 수 제거하기' 문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. arr return [4,3,2,1] [4,3,2] [10] [-1] 문제 풀이 1) 배열이 빈 배열이거나 1개일 경우, -1을 리턴하는 코드를 작성 if len(arr) == 0 or len(arr) == 1 : return [-1] 2) ar.. 2020. 3. 5.