본문 바로가기

알고리즘/python

[python/파이썬] 백준 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

 

[문제 풀이]

 

주어진 음들을 보고 몇 단 고음이 가능한지 계산하여 출력을 해야 하는 문제이다.

n : 주어진 음의 개수

a : 시작하는 음

d : 공차(음이 얼만큼 증가하는가)

 

주어진 데이터에서 a에서 시작하고 d만큼 증가하는 음들이 몇 개 존재하는지, 즉 몇 단 고음인지 찾아내야 한다.

값들은 연속될 필요는 없으나 순서는 맞아야 한다.

 

예를 들어 

n = 7

a = 3 

d = 3

이고 주어진 음들이 

3 3 9 7 2 6 9 라면

 

첫음은 3으로 시작하게 되고 3 증가된 수인 6이 있어야 2단 고음을 완성할 수 있다. 

6은 5번째에 존재하며 3과 6사이에는 다른 음들이 있으나 괜찮다.

그리고 마지막 원소가 9로 3, 6, 9 이렇게 3단 고음이 완성된다.

 

 

 

[소스 코드]

 

다음으로 찾아야하는 수를 now에 저장하고 그 수에 해당하면 result 값을 증가시킨다.

그 후에 now값을 d만큼 증가시켜 다음 수를 찾고자 한다.

 

import sys
input = sys.stdin.readline

n, a, d = map(int, input().split())

sound = list(map(int, input().split()))

result = 0
now = a
for i in range(n):
    if sound[i] == now:
        result += 1
        now += d

print(result)
반응형