Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- C언어 계산기 프로그램
- 문제해결 단계
- l-value참조자
- 문자형 배열
- C언어 스택 연산
- getline()함수
- r-value참조자
- 논리 연산
- 주기억장치
- IPv4 주소체계
- string유형
- 원형 연결 구조 연결된 큐
- c언어 괄호검사
- 값/참조/주소에 의한 전달
- 백준 파이썬
- 괄호 검사 프로그램
- 프로그래머스 푸드 파이트 대회
- 네트워크 결합
- const l-value참조자
- 알고리즘 조건
- 운영체제 기능
- LAN의 분류
- 유형 변환
- 프로그래머스 배열만들기4
- const화
- 범위 기반 for문
- 입출력 관리자
- 회전 및 자리 이동 연산
- auto 키워드
- C언어 덱
Archives
- Today
- Total
chyam
[프로그래머스 Lv2, python] - 양궁대회 본문
https://school.programmers.co.kr/learn/courses/30/lessons/92342
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(n, info):
res_list = []
max_diff = 0
max_res = [-1]
def dfs(n, res, i):
nonlocal max_diff, max_res # 먼저 nonlocal 선언
# 화살을 다 쓰거나 모든 점수를 탐색한 경우
if n == 0 or i == 11:
res[10] += n # 남은 화살을 모두 0점에 넣음
sum_ap, sum_ri = 0, 0
# 점수 계산
for j in range(11):
if info[j] == 0 and res[j] == 0:
continue
if res[j] > info[j]:
sum_ri += 10 - j
else:
sum_ap += 10 - j
# 점수 차이 비교 및 결과 저장
diff = sum_ri - sum_ap
if sum_ri > sum_ap:
if diff > max_diff:
max_diff = diff
max_res = res[:]
elif diff == max_diff:
# 사전순으로 더 큰 것을 선택
if res[::-1] > max_res[::-1]:
max_res = res[:]
return
# 현재 점수를 얻는 경우
if n > info[i]:
new_res = res[:]
new_res[i] = info[i] + 1
dfs(n - new_res[i], new_res, i + 1)
# 현재 점수를 얻지 않는 경우
dfs(n, res[:], i + 1)
dfs(n, [0] * 11, 0)
return max_res
'프로그래머스 > LV2' 카테고리의 다른 글
[프로그래머스 Lv2, python] - 순위 검색 (0) | 2025.05.13 |
---|---|
[프로그래머스 Lv2, python] - 3 x n 타일링 (0) | 2025.05.12 |
[프로그래머스 Lv2, python] - 혼자 놀기의 달인 (0) | 2025.05.08 |
[프로그래머스 Lv2, python] - 숫자 블록 (0) | 2025.05.07 |
[프로그래머스 Lv2, python] - [PCCP 기출문제] 2번 / 석유 시추 (0) | 2025.05.05 |