코딩테스트 연습 : 해시 level 1 완주하지 못한 선수
해시는 Key-value 쌍으로 데이터를 저장하는 자료구조
시도 1 : 해시 사용 X
def solution(participant, completion):
answer = ''
for i in range(len(participant)):
if participant[i] in completion:
index = completion.index(participant[i])
del completion[index]
else:
answer = participant[i]
break
return answer
시도 2 : 해시 사용
해시 = 딕셔너리 -> key 와 value로 이루어짐
딕셔너리 특징
1. 값이 입력한 순서와 상관없이 무작위로 저장 -> 인덱스 접근 X
2. 데이터에 접근할 땐 key값을 사용하여 접근
3. 저장된 key값은 변경이 불가능, 같은 이름의 key값 가질 수 없음. -> 중복 key값이 들어오면 기존 값이 삭제됨
4. 저장된 value값은 수정, 중복 가능
# 딕셔너리 구조
dictionary = {
'key1' : 'value1'
'key2' : 'value2'
'key3' : 'value3'
}
# 값 불러오는 방법 : 키를 사용해 값에 접근
print(dictionary['key2'])
# 값만 불러오는 방법
print(dictionary.values())
# 키만 불러오는 방법
print(dictionary.keys())
문제풀이
제한 사항 : 동명이인, completion 의 길이는 participant의 길이보다 1 작음, 알파벳 소문자
딕셔너리를 사용하여 참가자 이름은 key 값으로, value 값은 해당 이름의 개수로 지정한다.
첫번째 반복문을 만들어 해시 딕셔너리에 participant 이름이 없으면 value 값을 1로, 있으면 + 1 을 해준다.
두번째 반목문에서는 completion 이름의 key 값에 대응하는 해시 딕셔너리의 value 값이 1이면 해당 매핑 값들을 삭제하고, 1이 아닐 경우 value 값 - 1을 해준다.
두번째 반복문이 끝나면 해시 딕셔너리에는 1개의 key와 value 가 남게 되고, hash.keys()를 사용 하게 되면 dict_keys(['key']) 와 같이 Key만을 모아서 dict_keys 객체를 돌려준다. 따라서 list(hash1.keys())[0] 을 사용하여 객체가 아닌 값을 answer에 넣어준다.
def solution(participant, completion):
answer = ''
hash = {}
for i in participant:
if i in hash:
hash[i] += 1
else:
hash[i] = 1
for i in completion:
if hash[i] == 1:
del hash[i]
else:
hash[i] -= 1
answer = list(hash.keys())[0]
return answer
'study > 파이썬' 카테고리의 다른 글
[python] 프로그래머스 - 해시 level 2 (0) | 2020.06.11 |
---|---|
[python] 출력하기, print 옵션, 특수문자 (0) | 2020.03.19 |
[python] 입력값 받기, 한 번에 여러 입력값 받기 (0) | 2020.03.09 |
[python] 파이썬이란? (0) | 2020.03.09 |