Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- HWEngineer
- verilog HDL
- DFS
- 14889
- 비트마스크
- 비트마스크알고리즘
- 비트마스킹
- 가속기시스템
- 모델링
- Rtl
- 스타트와링크
- 가속컴퓨팅
- HDL
- 감시
- dfs연습문제
- 코딩테스트
- 알고리즘
- 백준
- 15683
- 최적화
- verilogHDL
- HW
- Module
- RTLEngineer
- boj
- verilog
- testbench
- 모듈
Archives
- Today
- Total
oohyoo 님의 블로그
[Python] 프로그래머스 - 완주하지 못한 선수 본문
[문제]
[잘못된 풀이 - 집합 이용]
def solution(participant, completion):
p = set(participant)
c = set(completion)
answer = list(p - c)[0]
return answer
동명이인이 있을 수 있다는 조건을 읽지 못하고 단순하게 집합으로 처리해버렸다.
[풀이 - 딕셔너리만 이용]
def solution(participant, completion):
answer = ''
temp = {}
for person in participant:
if person in temp:
temp[person] += 1
else:
temp[person] = 1
for person in completion:
if person in temp:
temp[person] -= 1
for person, count in temp.items():
if count == 1:
answer = person
break
return answer
[풀이 - 딕셔너리 + Hash]
def solution(participant, completion):
answer = ''
temp={}
answer_Hashkey=0
for i in participant:
temp[hash(i)]=i
answer_Hashkey+=hash(i)
for j in completion:
answer_Hashkey-=hash(j)
answer += temp[answer_Hashkey]
return answer
이 풀이는 'Hash'를 사용하여 좀 더 간단한 코드를 작성하였다. 처음에 작성한 잘못된 풀이(set을 이용)와 다르게 hash값을 이용하였기 때문에 이름이 같은 선수도 hash 키값이 다르기 때문에 분류된다.
만약 문제에서 완주하지 못한 선수가 여러명이라고 한다면, 딕셔너리에서 추가/삭제 과정으로 통해 구해야 될 것 같다.
'Hash'에 대해서 새로 알게 되었다. Hash 함수는 랜덤한 매개변수를 생성해주는 것으로 이해하였다. 딕셔너리의 키값으로 주로 이용하게 되는데, 랜덤한 수가 생성되기 때문에 보안분야에서 자주 쓰인다고 한다.
[참고한 글]
"해시(Hash)란 무엇인가(feat. Dictionary 자료구조)"
반응형
'코딩테스트' 카테고리의 다른 글
[Python] 프로그래머스 - 컨트롤 제트 (1) | 2025.01.18 |
---|---|
[Python] 프로그래머스 - A로 B 만들기 (3) | 2025.01.17 |
[Python] 프로그래머스 - 잠꼬대 영단어 (4) | 2025.01.16 |
[Python] 프로그래머스 pcce 자격시험 (2) | 2025.01.16 |
[Python] 백준 BOJ 15683 - 감시 (1) | 2024.08.31 |