////////
Search
🍃

허진혁

전화번호 목록

접근 방법

1.
전화번호 목록을 정렬함
2.
현재 인덱스의 값과 다음 인덱스의 값을 비교
a.
현재인덱스의 값이 다음 인덱스의 값에 포함된다면 false
b.
for문을 전부 다 돌았을 때, 포함되어있지 않으면 true
3.
효율성 고려
a.
같은 전화번호가 중복해서 들어있지 않습니다. → if len(phone_book[i]) < len(phone_book[i+1]):
b.
접두어는 앞 길이의 길이만큼만 일치하면 된다. → if phone_book[i] == phone_book[i+1][0:len(phone_book[i])]:
def solution(phone_book): # 접두어가 있으면 false, 그렇지 않으면 true phone_book.sort() if len(phone_book) == 1: return True for i in range(len(phone_book)-1): if len(phone_book[i]) < len(phone_book[i+1]): if phone_book[i] == phone_book[i+1][0:len(phone_book[i])]: return False return True
Python
복사

위장

접근방법

1.
dict = {종류 : 개수}
2.
개수가 0인 것을 포함해서 경우의 수를 계산 →for type in dict: answer *= (dict[type]+1)
3.
스파이는 하루에 최소 한 개의 의상은 입습니다. = 마지막에 아무것도 입지 않은 것 제외 → return answer - 1
def solution(clothes): answer = 0 dict = {} # key:종류 value:개수 for cloth, type in clothes: dict[type] = dict.get(type, 0) +1 # print(dict) answer = 1 # 입지 않은 것도 고려 for type in dict: answer *= (dict[type]+1) # 아무것도 입지 않은 것은 제외 return answer -1
Python
복사
딕셔너리 안에 찾으려는 Key 값이 없을 경우 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때에는 get(x, '디폴트 값')을 사용하면 된다!!

베스트앨범

접근방법

1.
두 개의 해시만들기
a.
total_dict = {장르 : 총 플레이 횟수}
b.
per_dict = {장르 : [플레이횟수, 인덱스]}
2.
total_dict 딕셔너리를 총 플레이 횟수 기준으로 내림차순 정렬
a.
딕셔너리의 value값을 정렬하기 위해 items() 메서드를 사용함. items()메서드를 활용하면 배열 안의 튜플형태로 바뀜
—> per_dict:{'classic': [(500, 0), (150, 2), (800, 3)], 'pop': [(600, 1), (2500, 4)]}
3.
per_dict 딕셔너리를 플레이 횟수 기준으로 내림차순 정렬
def solution(genres, plays): answer = [] total_dict = {} # 장르마다 플레이 수 per_dict = {} # 장르 안의 각 노래마다 플레이 수 # 딕셔너리 안에 찾으려는 Key 값이 없을 경우 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때에는 get(x, '디폴트 값')을 사용하면 된다!! for i in range(len(genres)): total_dict[genres[i]] = total_dict.get(genres[i], 0) + plays[i] per_dict[genres[i]] = per_dict.get(genres[i], []) + [(plays[i], i)] # print(f"total_dict:{total_dict}") # print(f"per_dict:{per_dict}") # 총 재생횟수 내림차순 정렬 total_sort = sorted(total_dict.items(), key= lambda x:x[1], reverse=True) # print(total_sort) # 장르마다 노래플레이 수 내림차순 정렬 for genre in per_dict: # print(per_dict[genre]) per_dict[genre] = sorted(per_dict[genre], key= lambda x: (-x[0])) # answes 배열에 장르별 노래재생횟수 넣기 for (genre, totalPlay) in total_sort: print(per_dict[genre]) for (plays, idx) in per_dict[genre][:2]: answer.append(idx) return answer genres = ["classic", "pop", "classic", "classic", "pop"] plays = [500, 600, 150, 800, 2500] print(solution(genres, plays))
Python
복사
total_dict:{'classic': 1450, 'pop': 3100} per_dict:{'classic': [(500, 0), (150, 2), (800, 3)], 'pop': [(600, 1), (2500, 4)]}
total_sort:[('pop', 3100), ('classic', 1450)]