본문 바로가기

공부하는 것들/알고리즘

백준 16162 : 가희와 3단 고음(그리디)

https://www.acmicpc.net/problem/16162

 

16162번: 가희와 3단 고음

첫째 줄에 참가자들의 음의 개수를 나타내는 정수 N(1 ≤ N ≤ 2 x 104), 고음의 첫 항과 공차를 의미하는 정수 A, D(1 ≤ A, D ≤ 107)가 공백으로 구분되어 주어진다. 둘째 줄에 참가자들의 음을

www.acmicpc.net

문제 요약: 대회에서는 처음 음(A), 공차(D) 대로 쌓은 고음만 n단 고음으로 처리해준다.

참가자들이 부른 N개의 음에서 정해진 규칙대로 쌓은 고음의 단수를 찾아라.

INPUT : N, A, D // 참가자가 부른 음 N개

OUTPUT : 참가자의 고음 단수

D만 정해져있다면 어려웠을텐데, A가 정해져 있어서 쉬웠다. for문을 돌면서 그 다음 항에 나올 음이 맞는지만 확인해주면 된다.

def solve(condition, songs):
    N,A,D = condition
    base = [songs[0]]
    ans = 0
    nxt = A+D*ans
    for i in range(0,N):
        if songs[i]==nxt: 
            ans+=1
            nxt = A+D*ans
    return ans       
    
if __name__ == '__main__':
    condition = list(map(int,input().split())) #N,A,D
    songs = list(map(int,input().split()))
    print(solve(condition, songs))