<오늘의 문제> 파이썬 기초문법 강의 듣고 코딩테스트 문제 풀기
https://school.programmers.co.kr/learn/courses/30/lessons/42840?language=python
- 문제를 읽었는데 무슨 말인지 이해가 안 갔다 '정답을 모르는데 어떻게 많이 맞춘 사람을 뽑아내지?'하는 ㅋㅋ약간 멍청한 생각을 해버렸다
- 내배캠에서 제공한 핸드북에 힌트가 있었다. 힌트를 2,3번 읽고나서야 문제가 이해 갔다.
// 이런 흐름으로 해결할 수 있구나만 확인해보세요
def solution(answers):
answer = []
cnt_one = 0
cnt_two = 0
cnt_three = 0
one = [1, 2, 3, 4, 5]
two = [2, 1, 2, 3, 2, 4, 2, 5]
three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
rank = {}
for i, ans in enumerate(answers):
if 첫번째 수포자가 맞췄는지 확인:
첫번째 수포자의 cnt 변수를 1증가
if 두번째 수포자가 맞췄는지 확인:
두번째 수포자의 cnt 변수를 1증가
if 세번째 수포자가 맞췄는지 확인:
세번째 수포자의 cnt 변수를 1증가
rank라는 딕셔너리를 cnt 변수로 구성
all_rank_values = rank.values() // value값 전체를 배열로 반환
max_rank_values = max(all_rank_values) // 이중 가장 큰값을 추출
for i in range(1, len(rank)+1): // for문의 index 자체를 몇번째 수포자 인지 확인하는 용도로 사용
if rank[i] == max_rank_values:
answer.append(i) // 위에서 구한 제일 많이 맞춘 경우의 값과 일치하면 해당 사람 번호를 answer에 추가
return answer
- 내배캠 핸드북에 이렇게까지 힌트를 줬는데 ㅎㅎ...
<1번째 시도>
def solution(answers):
answer = []
cnt_one = 0
cnt_two = 0
cnt_three = 0
one = [1, 2, 3, 4, 5]
two = [2, 1, 2, 3, 2, 4, 2, 5]
three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
rank = {}
for i, ans in enumerate(answers):
if one[i] == ans[i]:
cnt_one += 1
if two[i] == ans[i]:
cnt_two += 1
if three[i] == ans[i]:
cnt_three += 1
rank = {'one':cnt_one,
'two':cnt_two,
'three':cnt_three}
all_rank_values = rank.values()
max_rank_values = max(all_rank_values)
for i in range(1, len(rank)+1):
if rank[i] == max_rank_values:
answer.append(i)
return answer
- 실패다,,ㅎ
rank = {'one':cnt_one,
'two':cnt_two,
'three':cnt_three}
- 여기가 문제인 것 같은데
<2번째 시도>
rank[1] = {cnt_one}
rank[2] = {cnt_two}
rank[3] = {cnt_three}
- 이렇게 바꿔봤따 근데 실패 ㅎ,,흠...지금 힌트도 이해 못 한 거 같다 ㅋㅋㅋ
<3번째 시도>
rank[1] = {'cnt_one'}
rank[2] = {'cnt_two'}
rank[3] = {'cnt_three'}
- 혹시 따옴표를 넣어야 하나 싶어서 이렇게 수정했는데 안 된다,,
- 저 부분 힌트가 'rank라는 딕셔너리를 cnt 변수로 구성'인데 이 말이 무슨 말인지 잘 모르겠다...1번째 시도 때 썼던 것처럼 하는 건 줄 알았는데 아니라닛...아니 다른 데 문제가 있나????
- 대박....에러메시지를 이제 발견했다
<4번째 시도>
rank = {'one':'cnt_one',
'two':'cnt_two',
'three':'cnt_three'}
all_rank_values = rank.values()
max_rank_values = max(int(all_rank_values))
- max(all_rank_values) 사이에 int()를 넣어보았다 근데 아니네
- rank.values()도 int(rank.values())로 바꿔봤는데 아니었다...흠 타입에러.....흠........뭘까.........
<후퇴>
아무래도 파이썬 심화과정 강의까지 다 듣고 나서 풀어보는 게 좋을 것 같다^^!!!
내일 심화까지 다 듣고 팀원들과 같이 풀어보기로 했다ㅎㅎ