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 가 주어지기 때문에, 순차적으로 들어오는 음계에서 A + X*D 에 해당하는 값이 들어오는지만 확인해주면 된다.
    • A 마저도 들어오지 않을 수 있다는 점 (0단 고음) 이 반례가 될 수 있다.
    • A 와 D 가 정해지지 않고 음계들 중 가장 높은 X 를 구하는 문제로 바뀌면 풀 수 있을까? DP 스타일일 것 같긴 하다.

#include <iostream>

using namespace std;

int N, A, D, temp;
int answer;

int main(void)
{
    cin >> N >> A >> D;
    int cur = A;                // 첫 음부터 확인 시작
    for(int i = 0 ; i < N ; i++)
    {
        cin >> temp;
        if(temp == cur)         // 만약 X단 고음을 위한 현재 음계가 맞다면
        {
            cur += D;           // 다음 단의 음계로 재설정
            answer++;
        }
    }
    cout << answer << endl;
}

'PS > BOJ' 카테고리의 다른 글

[백준] 21758 : 꿀 따기  (0) 2021.05.31
[백준] 9466 : 텀 프로젝트  (0) 2021.05.30
[백준] 11653 : 소인수분해  (0) 2021.05.28
[백준] 13305 : 주유소  (0) 2021.05.27
[백준] 11722 : 가장 긴 감소하는 부분 수열  (0) 2021.05.26

+ Recent posts