티스토리 뷰
문제
코딩테스트 연습 - 완주하지 못한 선수
수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수��
programmers.co.kr
나의 풀이
파이썬에 있는 소팅을 사용해서 정렬해준 후, 앞에서부터 두 배열이 일치하는지 확인하면 간단하게 풀릴 것 같았다
프로그래머스에서 문제를 처음 풀어봐서 꼭 적혀있는 형식을 지켜야하는줄 알고 return answer을 하기위해 이런식으로 짰는데
정확도 10/50, 효율 0/50으로 10점이 나왔다
def solution(participant, completion):
participant.sort()
completion.sort()
answer = participant[-1]
for i in range(len(completion)):
if participant[i] != completion[i]:
answer = participant[i]
return answer
근데 answer를 지우고 바로 리턴하게 했더니 100점이 나왔다
def solution(participant, completion):
participant.sort()
completion.sort()
for i in range(len(completion)):
if participant[i] != completion[i]:
return participant[i]
return participant[-1]
무슨 차이가 있는거지?
answer부분 빼고는 하나도 손대지 않았는데 효율성은 그렇다 쳐도 정확도에서 이렇게 차이가 날 수가 있나?
아직 잘 모르겠다
다른 풀이
1. zip()
zip(*iterable)은 동일한 개수로 이루어진 자료형을 순서대로 짝지어 튜플로 묶어 주는 역할을 하는 함수이다.
def solution(participant, completion):
participant.sort()
completion.sort()
for par, com in zip(participant, completion) :
if par != com :
return par
return s[-1]
파이썬 내장함수인 zip()을 사용한 풀이가 있었다. 내가 푼 것과 같은 방법이지만 이런 식으로도 쓸 수 있구나
2. Counter()
collections.Counter()의 결과값(return)은 딕셔너리 형태로 출력된다.
잘 몰라서 직접 찍어봤는데 몇 개가 있는지 딕셔너리 형태로 출력이 됐다. Counter는 덧셈 뺄셈도 된다.
import collections
def solution(participant, completion):
answer = collections.Counter(participant) - collections.Counter(completion)
return list(answer.keys())[0]
3. hash()
hash() : return the hash value of the object (if it has one)
(사실 이 문제의 분류가 해시에 있는걸 봐서 이게 가장 적합한 풀이가 아니었나 싶다 .. )
def solution(participant, completion):
answer = ''
temp = 0
dic = {}
for part in participant:
dic[hash(part)] = part
temp += int(hash(part))
for com in completion:
temp -= hash(com)
answer = dic[temp]
return answer
hash(part)를 통해 해시값을 받고, 그 값들을 모두 더한 후 completion의 해시값의 합과 빼면 나오는 해시값이 답이다!
그 값이 스트링으로 뭔지 다시 바꾸기 위해 딕셔너리에 저장해서 마지막에 찾아주는 풀이다.
- Total
- Today
- Yesterday
- 카카오톡으로 로그인 오류
- 데이터바인딩 뷰바인딩 차이
- 파이썬 최대공약수
- kotlin fragment
- counting sort
- 소수 구하기 파이썬
- 카카오 기출
- 안드로이드
- 코틀린 뷰바인딩
- 코틀린
- 백준 1806
- 안드로이드 카카오톡으로 로그인
- 백준알고리즘
- 백준 1644
- 카카오 키해시
- 전화번호목록 파이썬
- 투포인터 알고리즘 파이썬
- 백준
- 백준 2003
- 시뮬레이터 키보드
- TextFormField keyboard
- 안드로이드 키해시
- 프로그래머스
- 코틀린 데이터바인딩
- 코틀린 바텀네비게이션
- 코틀린 뷰페이저
- flutter simultor
- 코틀린 리스트뷰
- Kotlin
- 투포인터 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |