

# participant = ["mislav", "stanko", "mislav", "ana"]
# completion = ["stanko", "ana", "mislav"]
def solution(participant,completion):
d = {}
for x in participant:
d[x] = d.get(x, 0) + 1
for x in completion:
d[x] -= 1
answer = [i for i,j in d.items() if j > 0]
return answer[0]
# >> "mislav"
해시맵을 이용하여 풀이하는 것이 제일 시간복잡도가 작다.
정렬(sort)을 이용해서 서로의 인덱스 값을 비교하는 방법으로 풀었었는데 이렇게 풀면 풀리기는 하지만 시간복잡도가 매우 크다.
# participant = ["mislav", "stanko", "mislav", "ana"]
# completion = ["stanko", "ana", "mislav"]
def solution(participant,completion):
d = {}
for x in participant:
d[x] = d.get(x, 0) + 1 x가 dic에 없으면 0+1, 있으면 원래 값에서 +1
(get()은 key에 대응되는 value값을 얻기 위해 사용하는 함수, 만약 찾으려는 값이 없는 경우 다른 값을 가져오게 하고 싶으면 get(x, '디폴트 값') 형식으로 적어주면 된다. 따라서 d[x] = d의 x의 value값에서 +1, key값이 존재하지 않으면 x: 0+1. )
for x in completion:
d[x] -= 1 x의 값에 -1, 그러면 최종적으로 완주하지 못한 선수만 값이 1이 될 것이다.
answer = [i for i,j in d.items() if j > 0] items()는 딕셔너리의 key와 value값들을 반환한다. 따라서 만약 j(value)가 0보다 크면 완주하지 못한 선수이므로 이 값만 리스트에 반환한다.
return answer[0]
# >> "mislav"
| [파이썬/python] 프로그래머스 : N개의 최소공배수 (Lv.2) (0) | 2023.04.07 |
|---|---|
| [파이썬/python] 프로그래머스 : 체육복 (Lv.1) (0) | 2023.04.07 |
| [파이썬/python] 백준 7785번 : 회사에 있는 사람(🥈5) (0) | 2023.04.03 |
| [파이썬/python] 백준 2903번 : 중앙 이동 알고리즘(🥉3) (0) | 2023.04.03 |
| [파이썬/python] 백준 2720번 : 세탁소 사장 동혁(🥉3) (0) | 2023.04.03 |