코딩테스트 연습에 공개된 문제는 (주)그렙이 저작권을 가지고 있습니다.
(지문 하단에 별도 저작권 표시 문제 제외)
코딩테스트 연습 문제의 지문, 테스트케이스, 풀이 등과 같은 정보는 비상업적, 비영리적 용도로 게시할 수 있습니다.
코딩테스트 정보
- 프로그래머스
- python
- level 2
- 점수 : +18
- 문제 링크
문제
프로그래머스 문제 참고 (내용이 길어서..)
풀이 코드
풀이 코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# n발을 발사하는 모든 경우의 수 만드는 메서드 정의
def make_lists(n):
list_ = []
for a in range(n+1):
for b in range(n-a+1):
for c in range(n-a-b+1):
for d in range(n-a-b-c+1):
for e in range(n-a-b-c-d+1):
for f in range(n-a-b-c-d-e+1):
for g in range(n-a-b-c-d-e-f+1):
for h in range(n-a-b-c-d-e-f-g+1):
for i in range(n-a-b-c-d-e-f-g-h+1):
for j in range(n-a-b-c-d-e-f-g-h-i+1):
k = a+b+c+d+e+f+g+h+i+j
if k < n:
list_.append([a, b, c, d, e, f, g, h, i, j, n-k])
elif k >= 0:
list_.append([a, b, c, d, e, f, g, h, i, j, 0])
else:
pass
return list_
# 서로 다른 리스트 간 비교 메서드 정의
def vs_shoots(list1, list2):
for i in range(11):
if list1[-i-1] > list2[-i-1]:
return list1
elif list1[-i-1] < list2[-i-1]:
return list2
else:
pass
# 메인 메서드
def solution(n, info):
answer = []
ryan_shoots = []
ryan_scores = []
apeach_scores = []
score_subs = []
answer_list = []
idx_list = []
# 모든 발사 경우의 수 생성
ryan_shoots = make_lists(n)
# 모든 발사 경우의 수에서 ryan이 승리하는 경우 추출
for i, shoot in enumerate(ryan_shoots):
score_ryan = 0
score_apeach = 0
for x in range(11):
if shoot[x] == 0 and info[x] == 0:
pass
elif shoot[x] > info[x]:
score_ryan += 10 - x
else:
score_apeach += 10 - x
if score_ryan > score_apeach:
answer_list.append(shoot)
ryan_scores.append(score_ryan)
apeach_scores.append(score_apeach)
score_subs.append(score_ryan - score_apeach)
# 최대 점수차인 경우 중 낮은 점수에 많이 맞춘 경우를 추출
# ryan이 패배한 경우는 [-1] 반환
if len(answer_list) != 0:
max_score = max(score_subs)
for i, sub in enumerate(score_subs):
if sub == max_score:
idx_list.append(i)
for i, idx in enumerate(idx_list):
if i != 0:
answer = vs_shoots(answer, answer_list[idx])
else:
answer = answer_list[idx]
else:
answer = [-1]
return answer
리뷰
어우 빡세지만 재밌는 문제였다.