1. 문제
programmers.co.kr/learn/courses/30/lessons/42576
2. 접근 방법
해시로 접근을 해보았습니다.
1. participant의 이름들을 key값으로 갖는 hash를 만들어서 해당 key의 value는 해당 이름을 가진 사람들의 숫자입니다. (동명이인의 경우 +a, 아닌 경우 1)
2. completion을 반복하여 동명이인의 경우-1, 아닌 경우 해당 key를 완전히 빼버립니다.
3. 남은 key를 반환합니다.
3. 코드
python
def solution(participant, completion):
hash=dict()
for part in participant:
if part in hash:
hash[part] += 1
else:
hash[part] = 1
for name in completion:
if hash[name] == 1:
del hash[name]
else:
hash[name] -= 1
answer = list(hash.keys())[0]
return answer
4. 마치며
프로그래머스는 사실 기출문제 말고는 안풀어봤는데, 되게 좋은거같습니다
풀이 후에 다른 사람의 풀이를 바로 볼 수 있다는 것 (좋아요 순으로 뜨는 것 같음)
ㅇㅣ런 풀이도 있네요 ,,
import collections
def solution(participant, completion):
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]
참고로 collections.Counter()의 경우,
컨테이너에 동일한 값의 자료가 몇개인지를 파악하는데 사용하는 객체라고 합니다.
return 값은 딕셔너리 형태로 출력된다고 하네욧
# collections.Counter 예제 1(리스트를 입력할 경우)
import collections
lst = ['aa', 'bb', 'cc', 'aa', 'bb']
print(collections.Counter(lst))
'''
결과
Counter({'aa': 2, 'bb': 2, 'cc': 1})
'''
# collections.Counter 예제 10(뺄셈을 사용할 경우)
b = ['aa', 'bb', 'cc']
print(collections.Counter(lst)-collections.Counter(b))
'''
결과
Counter({'aa': 1, 'bb': 1})
'''
collections.Counter 예제 출처 : excelsior-cjh.tistory.com/94
'Algorithm > Python' 카테고리의 다른 글
[해시] 위장 (0) | 2021.05.01 |
---|---|
[해시] 전화번호 목록 (0) | 2021.04.30 |
[백준 11399] ATM (0) | 2021.04.28 |
[백준 1932] 정수 삼각형 (6) | 2021.04.27 |
[swea 5650] 핀볼 게임 (0) | 2021.04.24 |