-
[Python] 2847 게임을 만든 동준이Algorithm/백준 2023. 1. 31. 14:15
1. 문제 📚
https://www.acmicpc.net/problem/2847
2847번: 게임을 만든 동준이
학교에서 그래픽스 수업을 들은 동준이는 수업시간에 들은 내용을 바탕으로 스마트폰 게임을 만들었다. 게임에는 총 N개의 레벨이 있고, 각 레벨을 클리어할 때 마다 점수가 주어진다. 플레이어
www.acmicpc.net
2. 입출력 예 📋
3. 알고리즘 ✅
점수를 내리는 것을 최소한으로 하는 방법은 뒤에 숫자가 1이 더 크면 된다 → 그리디
나는 while 문을 돌려가며 하나씩 -1을 해주고 마지막에 리스트를 전부 순회하며 뒤에 숫자가 큰 지 다시 체크를 해주었다.
맞긴했지만, 더 좋은 방법이 있을 것같아 구글링해보았다!
다른 사람들 코드를 보니 뒤에부터 리스트를 순회하며 뒤의 값보다 1만큼 작게 만들어주었다
앞으론 뒤에서 부터 하는 생각도 해봐야겠당 😅
4. 내 코드 💻
import sys input = sys.stdin.readline N = int(input().strip()) scores = [int(input().strip()) for _ in range(N)] index = 0 answer = 0 last_check = False while True: if last_check: break if scores[index] >= scores[index + 1]: scores[index] -= 1 answer += 1 else: index += 1 # 뒤의 값이 더 큰지 체크 아니라면 다시 처음부터 -1 해주기 if index == len(scores) - 1: for i in range(N - 1): if scores[i] >= scores[i + 1]: index = 0 last_check = False break else: last_check = True print(answer)
5. 다른 사람 코드 💻
import sys input = sys.stdin.readline N = int(input().strip()) scores = [int(input().strip()) for _ in range(N)] answer = 0 for i in range(N - 1, 0, -1): if scores[i] <= scores[i - 1]: answer += (scores[i - 1] - scores[i] + 1) scores[i - 1] = scores[i] - 1 print(answer)
'Algorithm > 백준' 카테고리의 다른 글
[Python] 1806 부분 합 (0) 2023.02.10 [Python] 2457 공주님의 정원 (0) 2023.02.03 [Python] 1439 뒤집기 (0) 2023.01.31 [Python] 11053 가장 긴 증가하는 부분 수열 (0) 2023.01.20 [Python] 15657 N과 M (8) (0) 2023.01.20