10월 24일
항해99 시작 전 일주일동안 하루에 하나씩 파이썬 코딩 문제를 풀어보기로 했는 데
월요일에 풀어 볼 문제는 완주하지 못한 선수이다. 1시간째 보고 있는 데
이런 저런 방법을 동원 중이지만 아직까지는 모르겠다.
10월 25일
def solution(participant, completion): answer = '' for i in participant: if i not in completion: answer = i return answer print(solution(["leo", "kiki", "eden"], ["eden", "kiki"])) print(solution(["marina", "josipa", "nikola", "vinko", "filipa"], ["josipa", "filipa", "marina", "nikola"])) print(solution(["mislav", "stanko", "mislav", "ana"], ["stanko", "ana", "mislav"]))
for문을 돌려서 participant 리스트의 있는 속성들을 하나하나 뽑아내고 if문에 not in을 사용해서 completion 안에 i가 없으면 i를 answer 변수에 담을 수 있도록 설정했다. 예제 1과 2는 잘 출력 되는 데 예제 3에서 mislav라는 이름을 가진 동명이인을 출력하는 부분에서는 출력 되지 않았다. 더 찾아보고 코드를 수정 해야 할 것 같다.
(방법 1)
def solution(participant : list, completion : list): participant.sort() completion.sort() for i in range(0, len(participant)): if participant[i] != completion[i]: return participant[i] if i == len(completion) - 1: return participant[i+1] print(solution(["leo", "kiki", "eden"], ["eden", "kiki"])) print(solution(["marina", "josipa", "nikola", "vinko", "filipa"], ["josipa", "filipa", "marina", "nikola"])) print(solution(["mislav", "stanko", "mislav", "ana"], ["stanko", "ana", "mislav"]))
다른 팀원분이 푸신 코드를 공유 받았는 데 첫번째 if문은 이해가 가는 데 두번째 if문은 왜 i랑 len(completion) -1이랑 같으면 participant[i]를 return 하는 지 이해가 가지 않아서 팀원분께 여쭤 보았다.
(방법 2)
def solution(participant, completion):
hashDic = {}
sumHash = 0
for part in participant :
hashDic[hash(part)] = part
sumHash += hash(part)
for comp in completion :
sumHash -= hash(comp)
return hashDic[sumHash]
print(solution(["leo", "kiki", "eden"], ["eden", "kiki"]))
print(solution(["marina", "josipa", "nikola", "vinko", "filipa"], ["josipa", "filipa", "marina", "nikola"]))
print(solution(["mislav", "stanko", "mislav", "ana"], ["stanko", "ana", "mislav"]))
for문을 사용해서 participant 리스트의 요소들을 하나씩 빼오고 요소 하나씩을 hash를 사용해서 특정한 값으로 지정한다. sumHash를 사용해서 값들을 저장하고 다음으로 for문을 사용해서 completion의 요소들의 hash 값을 구해서 sumHash에서 뺀다. 반복문을 다 돌고나면 sumHash의 값이 완주하지 못한 선수의 Hash 값이 때문에 return 하면 된다.
https://programmers.co.kr/learn/courses/30/lessons/42576?language=python3
'항해 전 > 스터디(Python 알고리즘)' 카테고리의 다른 글
3진법 뒤집기 (0) | 2021.10.28 |
---|---|
같은 숫자는 싫어 (0) | 2021.10.26 |
소수 만들기 (0) | 2021.10.25 |
8조 첫번째 스터디 회의 (2) | 2021.10.20 |
8조 스터디 시작 (0) | 2021.10.18 |
댓글