본문 바로가기

프로그래머스 코딩테스트 연습 Lv1

프로그래머스 코딩테스트 연습 - 모든문제 Lv1 [ 완주하지 못한 선수 ]

[문제]

- 단 한명의 선수를 제외하고 모두 완주 했음.

- 참가자 배열 participant 완주자 배열 completion이 있음.

- 완주하지 못한 선수의 이름을 return

 

[제한사항]

- 1명이상 100,000명 이하

- completion길이는 participant보다 1 작음

- 이름은 1~20개의 알파벳 소문자.

- 동명이인 있음.

 

[입출력 예]

-participant = ["leo", "kiki", "eden"] 

-completion = ["eden", "kiki"]

-return = "leo"

 

[내풀이]

-배열 만들어서 소트하고 비교해서 없는거 리턴.

다른거 있나 공부 해보자. 이게 사실 해시 파트의 문젠데 해쉬에 대해 우선 학습하는게 중요하다고 생각했다.

내가 아는 해쉬 함수는 매핑할때 일정 규칙이나 함수를 대입해 키값을 해시값으로 바꾸는 것인데 암호화에 주로 사용된다고 알고 있다. 또한 테이블을 저장할때 빠르게 서치하기 위해 주로 사용된다고 알고 있다. 그럼 이 문제에서 해시를 어떻게 사용해야 할까?

와 ㅋㅋㅋ 실환가 진짜 대박풀이 같음.. 따라치면서는 이게 무슨뜻이지 하면서 쳤는데 한줄한줄 해석해보니 answer=dic[temp] 에서 저절로 와~~ 소리가.

해석

1. participant 배열에 있는 문자들을 모두 해시(숫자) 로 변경 해서 이를 모두 '더해서'  temp에 저장

2. completion 배열에 있는 문자들을 모두 해시(숫자) 로 변경해서 이를 모두 '더해서'  temp에서 이를 뺌.

3. 남은 temp(숫자)를 앞서 만든 dic[temp] 해서 해시값에 만든 문자를 찾음.

배워간다...