1) 문제

클릭▼


2) 코드

 ('좋아요' 수 제일 많은 풀이)

 

 


2) 코드 설명

① rank = [6, 6, 5, 4, 3, 2, 1]

 

# 로또의 순위는 1등부터 6등까지 있다. 

 

 

# 여기서 일치하는 개수를 계산하여 그 개수와 맞는 인덱스 값을 출력 하려고 한다. 

# rank = [6, 6, 5, 4, 3, 2, 1] 는 rank = [6위, 6위, 5위, 4위, 3위, 2위, 1위] 의미한다.

 

 

일치하는 개수가 0이면 rank[0] = 6(순위)을 출력하고, 맞은 개수가 6이면 rank[6] = 1(순위)을 출력하게

   만들었다.

② cnt_0 = lottos.count(0)

 

# lottos 안에 0의 개수를 찾아서 cnt_0에 넣는다.

# 0의 개수를 찾는 이유는 알아볼 수 없는 번호가 '0' 이기 때문에 최고 순위를 구할때 '0'이 모두 win_nums의    숫자 중 하나라고 생각하고 0의 개수를 구한 다음 그것을 lottos와 win_nums의 일치하는 숫자의 개수에

  더해줘서 최고 순위를 구한다.

# count() 함수는 문자열 안에서 찾고 싶은 문자의 개수를 찾아주는 함수이다. 

# 예를들어 lottos.count(0) 이렇게 출력하면 lottos 안에 0이 몇개인지 찾아준다.

# lottos 안에 0이 2개가 있으므로↓ 2개가 출력되는 걸 확인할 수 있다.

 

③ ans = 0

# 맞은 개수를 담을 ans 변수를 만들고 먼저 0으로 초기화 시킨다

for x in win_nums:                                                                                                                  if x in lottos:                                                                                                                            ans += 1

 

# win_nums 안의 요소를 하나씩 뽑아 x 넣고 만약 x가 lottos 안에 있으면 ans에 1씩 더해준다.

return rank[cnt_0 + ans],rank[ans]

# 결과로 최고 순위 최저 순위를 출력해야 한다.

# 최고 순위 rank[cnt_0 + ans] = rank[0의 개수 + ans의 값]을 의미.

# 최저 순위 rank[ans] = rank[ans의 값]을 의미.

 

 

# ↑위와같이 cnt_0 = 2, ans = 2 이므로 최고 순위 rank[2+2] = rank[4], 최저 순위 rank[2]가 된다. 

# rank[4] = 3, rank[2] = 5 이므로 답은 (3, 5)이다.

 

 

# 다른 예로 lottos = [0, 0, 0, 0, 0, 0] 와 win_nums = [38, 19, 20, 40, 15, 25] 넣어서 출력하면

 

 

# cnt_0 = 6, ans = 0 이므로 최고 순위는 rank[6+0] = rank[6], 최저 순위는 rank[0] 이고 답은 (1, 6) 이다.

 

+ Recent posts