알고리즘을 풀며 종종 등장하는 상황

Matthew Woo·2021년 12월 29일
0

알고리즘 풀이

목록 보기
1/1
  1. dictionary 초기 키값 설정 및 Update
    dictionary를 쓰면서
    반복문이 돌면서 dictionary에 해당되는 key 값을 update 시켜주거나 하지만
    처음 해당 key 값을 생성해줘야할 때와 섞여 있어서 이와 관련된 처리를 해주는게 아직 어렵다.

프로그래머스 베스트앨범

해당 문제에서는 이렇게 처리하였다.

count_doc = dict()
genre_table = dict()

    for i in range(len(genres)):
        try: # 2. 그렇지 않을 경우에는 해당 key에 해당하는 값을 update 해주면 됨
            count_doc[genres[i]] += plays[i]
            genre_table[genres[i]].append([plays[i], i])
        except: # 1. 최초 실행 시에는 key값이 없어서 에러가 날터이니 except로 들어와서 최초생성
            count_doc[genres[i]] = plays[i]
            genre_table[genres[i]] = [[plays[i], i]]

try except 안쓰려면 if genres[i] in count_doct: 이렇게 하면 됨

  1. dictionary 정렬하기
  • Value 값을 기준으로 키값 정렬하기

    sorted(dict, key= lambda x: dict[x])

test_dict = dict()

test_dict[1] = [54, 10, 34] # [0] value 기준으로 가장 큼
test_dict[2] = [5, 16, 7] # [1] value 기준으로 가장 큼
test_dict[3] =  [1, 4, 50] # [2] value 기준으로 가장 큼

print(test_dict)

sorted1 = sorted(test_dict, key = lambda x: test_dict[x])
sorted2 = sorted(test_dict, key = lambda x: test_dict[x][0])
sorted3 = sorted(test_dict, key = lambda x: test_dict[x][1])
sorted4 = sorted(test_dict, key = lambda x: test_dict[x][2])

print(sorted1) # [3, 2, 1] # !! 잘보면 key값 1이 가장 큰 value를 갖고 있어서 뒤로 갔음 !!
print(sorted2) # [3, 2, 1]
print(sorted3) # [3, 1, 2]
print(sorted4)

응용

for key in sorted(test_dict): # dictionary 는 sort하면 key를 return한 배열을 주기때문에 
    print(key, test_dict[key])

# 결과
1 [54, 10, 34]
2 [5, 16, 7]
3 [1, 4, 50]
  • Value 값을 기준으로 Value return
    위의 임의로 만든 값으로 살펴보자

tuples = sorted(dict.items())

items() 함수는 key-value 쌍이 tuple로 구성된 리스트가 리턴된다. 이를 정렬해주는 것.

new0 = sorted(test_dict.items(), key = lambda x: x[0]) # [(1, [54, 10, 34]), (2, [5, 16, 7]), (3, [1, 4, 50])]
new1 = sorted(test_dict.items(), key = lambda x: x[1]) # [(3, [1, 4, 50]), (2, [5, 16, 7]), (1, [54, 10, 34])]
new2 = sorted(test_dict.items(), key = lambda x: x[1][0]) # [(3, [1, 4, 50]), (2, [5, 16, 7]), (1, [54, 10, 34])]
new3 = sorted(test_dict.items(), key = lambda x: x[1][1]) # [(3, [1, 4, 50]), (1, [54, 10, 34]), (2, [5, 16, 7])]
new4 = sorted(test_dict.items(), key = lambda x: x[1][2]) # [(2, [5, 16, 7]), (1, [54, 10, 34]), (3, [1, 4, 50])]

alphabet = 'ABC'

print(alphabet[::-1])
'CBA'

profile
지속가능하고 안정적인 시스템을 만들고자 합니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN