반응형
250x250
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 |
Tags
- 파이썬 정렬
- 머신러닝
- 현대엔지니어링
- 공모주 청약
- 정렬
- 오미크론 자가격리
- 그리디
- 공모주청약
- 사회조사분석사 2급
- 사회조사분석사2급실기신청꿀팁
- 사회조사분석사 2급 공부방법
- 사이킷런
- 사회조사분석사 2급 접수
- 사회조사분석사 2급 필기 공부방법
- 시물레이션
- 사회조사분석사 2급 필기 시험시간
- 백준 알고리즘
- 사회조사분석사2급실기신청
- 사회조사분석사 2급 기출문제집
- 2월공모주
- DFS
- BFS
- 벽부수고이동하기 파이썬
- 너비우선탐색
- 현대엔지니어링 수요예측
- 공모주
- 사회조사분석사 2급 필기 요약정리
- 사회조사분석사 2급 독학
- 백준
- 알고리즘
Archives
- Today
- Total
세상을 바꾸는 데이터
[백준 2847번] 게임을 만든 동준이 - 파이썬 본문
문제 링크:
https://www.acmicpc.net/problem/2847
2847번: 게임을 만든 동준이
학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어
www.acmicpc.net
풀이 과정:
이 문제는 사고의 전환이 필요한 그리디 문제이다.
맨 처음 레벨부터 점수를 감소시키는 것이 아닌, 맨 마지막 레벨부터 점수를 감소시켜야 한다.
그 이유는 쉬운 레벨을 클리어할 때 점수 < 어려운 레벨을 클리어할 때 점수를 부여하기 때문이다.
일반적으로 우리가 사용하는 for 구문에 사용되는 range(start, end, step) 함수에서 start보다 end가 큰 값을 넣는 경우가 많다.
하지만 이 문제는 역으로, start가 end보다 큰 형태로 반복문을 실행하여 결과를 출력해보자.
풀이 코드:
# 2847번 게임을 만든 동준이
n = int(input())
# 변수 생성
level_score = []
count = 0
# 레벨 점수 리스트 받아오기
for _ in range(n):
level_score.append(int(input()))
# 마지막 레벨부터 처음 레벨까지 1개씩 가져오며
for i in range(n-1, 0, -1):
# 현재 레벨이 전 레벨보다 점수가 작거나 같다면
if level_score[i] <= level_score[i-1]:
# 점수를 (레벨 차이 + 1)만큼 감소
count += (level_score[i-1] - level_score[i]) + 1
# 전 레벨은 현재 레벨보다 1 작은 점수 부여
level_score[i-1] = level_score[i] - 1
# 정답 출력
print(count)

728x90
반응형
'PS Study > BOJ(백준)' 카테고리의 다른 글
[백준 14500번] 테트로미노 - 파이썬 (62) | 2022.02.11 |
---|---|
[백준 15686번] 치킨 배달 - 파이썬 (74) | 2022.02.09 |
(알고리즘 공부점검) [백준 1260번] DFS와 BFS - 파이썬 (33) | 2022.02.08 |
[백준 14503번] 로봇청소기 - 파이썬 (31) | 2022.02.08 |
[백준 1783번] 병든 나이트 - 파이썬 (43) | 2022.02.07 |