문제
2841번: 외계인의 기타 연주
첫째 줄에 멜로디에 포함되어 있는 음의 수 N과 한 줄에 있는 프렛의 수 P가 주어진다. (N ≤ 500,000, 2 ≤ P ≤ 300,000) 다음 N개 줄에는 멜로디의 한 음을 나타내는 두 정수가 주어진다. 첫 번째 정수
www.acmicpc.net
알고리즘
- 반복문을 통해 줄의 번호와 프렛의 번호를 입력받아 확인한다.
- 주어진 줄의 더 높은 프렛을 누르고 있는 경우에 while문을 통해 손가락을 하나씩 뗀다.
- 이미 누르고 있는 줄의 프렛인 경우 패스한다.
- 주어진 줄의 프렛이 누르고 있는 프렛보다 높고 같지 않은 경우 프렛을 누른다.
코드
import sys
n, p = map(int, sys.stdin.readline().split())
line = [[0] for x in range(7)]
cnt = 0
# 반복문을 통해 줄의 번호와 프렛의 번호를 확인
for i in range(n):
line_num, plat_num = map(int, sys.stdin.readline().split())
# 주어진 줄의 더 높은 프렛을 누르고 있는 경우, 손가락을 하나씩 뗀다.
while line[line_num][-1] > plat_num:
line[line_num].pop()
cnt += 1
# 이미 누르고 있는 줄의 프렛인 경우 패스
if line[line_num][-1] == plat_num:
continue
# 주어진 줄의 프렛을 누른다.
line[line_num].append(plat_num)
cnt += 1
print(cnt)
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 17615번(파이썬): 볼 모으기 (1) | 2022.04.19 |
---|---|
[baekjoon] 백준 21758번(파이썬): 꿀 따기 (0) | 2022.04.18 |
[baekjoon] 백준 1448번(파이썬): 삼각형 만들기 (0) | 2022.04.16 |
[baekjoon] 백준 1431번(파이썬): 시리얼 번호 (0) | 2022.04.15 |
[baekjoon] 백준 1244번(파이썬): 스위치 켜고 끄기 (0) | 2022.04.14 |