본문 바로가기

STUDY CODE/매일 CODING

[매일알고-1] 완주하지 못한 선수

오늘부터 매일 알고리즘 1문제씩 시작

 

<두개의 리스트에서 다른것을 찾아내는 유형>

 

1. set { } 이용

함수의 차집합을 이용하여 solution을 구하려고 하였으나,,

set 함수의 차집합에서는 동일한 이름이 있는 경우를 분별하지 못하므로 fail.

 

2. normal case

for 함수를 이용해서 completion 안에 있는 list 원소들과 participant 원소를 비교한다는 frame

completion 내에서 for 구문을 이용해서 순환. participant와 다른 것이 있다면 반환.

그렇지 않은 경우, 마지막 원소가 완주하지 못한 선수로 구분. return으로 반환.

그러나 그 전에 sort 함수를 이용해줘야, 동일 이름이 있는 경우도 구분할 수 있다.

(sort 없이 이용할 경우, 완주한 TOM과 완주하지 못한 TOM을 구분 X. 무조건 완주했다고 처리)

 

3. HASH 함수

HASH의 경우는 자주 출제되는 유형으로 보여 공부가 필요한 부분이다.

HASH 함수는 주어진 값을 특정 키로 매핑하는 함수이다.

hash()는 hashvalue를 반환하고, hashvalue는 딕셔너리 키에 사용

list,set,dict 같은 mutable 객체들은 사용불가

temp += int(hash(part))

--> 쉽게 생각하면 1,2,3,4 가 있고 1,2,3 이 있다고 했을때 

(1+2+3+4) - 1 - 2- 3 = 4 >>>이런 방식으로 없는 숫자를 찾아내는 구문

 

+) dictionary 사용 형태

cabinet = {3: "유재석", 100: "김태호"}

print(cabinet[3]) # 유재석 -> key 3 에 해당하는 value