Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- PYTHON
- Git
- Docker
- 캐치카페
- hackerrank
- 코로나19
- 편스토랑
- Baekjoon
- SW Expert Academy
- ChatGPT
- leetcode
- 맥북
- 프로그래머스
- 더현대서울 맛집
- 자연어처리
- 파이썬
- Kaggle
- Real or Not? NLP with Disaster Tweets
- 우분투
- gs25
- programmers
- dacon
- github
- 프로그래머스 파이썬
- 편스토랑 우승상품
- ubuntu
- 금융문자분석경진대회
- AI 경진대회
- 데이콘
Archives
- Today
- Total
솜씨좋은장씨
[Programmers] 완전탐색 : 모의고사 (Python) 본문
728x90
반응형
1일 1문제 16일차!
오늘의 문제는 프로그래머스의 완전탐색 : 모의고사 입니다.
첫번째 시도
def solution(answers):
answer = []
tester_1 = [1, 2, 3, 4, 5]
tester_2 = [2, 1, 2, 3, 2, 4, 2, 5]
tester_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
len_tester_1 = len(tester_1)
len_tester_2 = len(tester_2)
len_tester_3 = len(tester_3)
check_1 = [0] * len_tester_1
check_2 = [0] * len_tester_2
check_3 = [0] * len_tester_3
for i in range(len(answers)):
if tester_1[i%len_tester_1] == answers[i]:
check_1[i%len_tester_1] = check_1[i%len_tester_1] + 1
if tester_2[i%len_tester_2] == answers[i]:
check_2[i%len_tester_2] = check_2[i%len_tester_2] + 1
if tester_3[i%len_tester_3] == answers[i]:
check_3[i%len_tester_3] = check_3[i%len_tester_3] + 1
right_dict = {1:sum(check_1), 2:sum(check_2), 3:sum(check_3)}
right_dict = sorted(right_dict.items())
for i in range(len(right_dict)):
if right_dict[i][1] != 0:
answer.append(right_dict[i][0])
return answer
두번째 시도
def solution(answers):
answer = []
tester_1 = [1, 2, 3, 4, 5]
tester_2 = [2, 1, 2, 3, 2, 4, 2, 5]
tester_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
len_tester_1 = len(tester_1)
len_tester_2 = len(tester_2)
len_tester_3 = len(tester_3)
check_1 = [0] * len_tester_1
check_2 = [0] * len_tester_2
check_3 = [0] * len_tester_3
for i in range(len(answers)):
if tester_1[i%len_tester_1] == answers[i]:
check_1[i%len_tester_1] = check_1[i%len_tester_1] + 1
if tester_2[i%len_tester_2] == answers[i]:
check_2[i%len_tester_2] = check_2[i%len_tester_2] + 1
if tester_3[i%len_tester_3] == answers[i]:
check_3[i%len_tester_3] = check_3[i%len_tester_3] + 1
right_dict = {1:sum(check_1), 2:sum(check_2), 3:sum(check_3)}
right_dict = sorted(right_dict.items())
right_dict = sorted(right_dict, key=lambda x : (-x[1], x[0]))
for i in range(len(right_dict)):
if right_dict[i][1] != 0:
answer.append(right_dict[i][0])
return answer
앞에서 자꾸 왜 틀리나 잘 고민해보니
가장 많이 많은 사람만 답에 추가를 해야하는데 그냥 맞은 순서대로 list에 추가를 해서 문제가 되는 것이었습니다.
세번째 시도
def solution(answers):
answer = []
tester_1 = [1, 2, 3, 4, 5]
tester_2 = [2, 1, 2, 3, 2, 4, 2, 5]
tester_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
len_tester_1 = len(tester_1)
len_tester_2 = len(tester_2)
len_tester_3 = len(tester_3)
check_1 = 0
check_2 = 0
check_3 = 0
for i in range(len(answers)):
if tester_1[i%len_tester_1] == answers[i]:
check_1 = check_1 + 1
if tester_2[i%len_tester_2] == answers[i]:
check_2 = check_2 + 1
if tester_3[i%len_tester_3] == answers[i]:
check_3 = check_3 + 1
max_right = max(check_1, check_2, check_3)
if max_right == check_1:
answer.append(1)
if max_right == check_2:
answer.append(2)
if max_right == check_3:
answer.append(3)
answer = sorted(answer)
return answer
해당 부분을 수정해주니 이상없이 해결되었습니다.
'Programming > 코딩 1일 1문제' 카테고리의 다른 글
[Programmers] 스택/큐 : 기능개발 (Python) (0) | 2020.02.25 |
---|---|
[Programmers] 해시 : 전화번호 목록 (Python) (9) | 2020.02.24 |
[leetCode] 2. Add Two Numbers (Python) (0) | 2020.02.21 |
[leetCode] 7. Reverse Integer (Python) (0) | 2020.02.21 |
[Programmers] 스택/큐 : 탑 (Python) (0) | 2020.02.19 |
Comments