펭로그

[C++] 삼성 SDS KOITP 쉬어가는페이지 본문

Study/PS(Algorithm)

[C++] 삼성 SDS KOITP 쉬어가는페이지

노랑펭귄 2018. 7. 19. 05:56

문제링크 : https://koitp.org/problem/SDS_TEST_PAGE


[삼성 SDS 대학생 알고리즘 특강 사전 테스트 A Type 3번 문제]

처음으로 읽은 페이지를 시작으로 하여 건너뛸 페이지수 + 1 만큼 더해가면서 푸는 방법도 좋지만 이렇게 할 경우 (전체페이지수 - 초기페이지) / (스킵페이지 + 1) 만큼 실행을 해야한다.

어짜피 input으로 받은 값들은 모두 다 if 문으로 조건을 판별해야하기 때문에 이 방법이 훨씬 더 낫다.

(쉬어가는 페이지 - 초기페이지)가 (스킵페이지 + 1)로 나누어 떨어지는가를 체크하면 더 쉽고 빠르게 풀 수 있다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// KOITP_SDS_Atype_03
#include <bits/stdc++.h>
using namespace std;
 
int main() {
    // freopen("../input.txt", "r", stdin);
    int T;
    cin >> T;
 
    for (int t = 0; t < T; t++) {
        int num;
        int initPage;
        int skipPage;
        int numRest;
        int input;
        int result = 0;
 
        cin >> num >> initPage >> skipPage >> numRest;
 
        for (int i = 0; i < numRest; i++) {
            cin >> input;
            if (input >= initPage) {
                if (input == initPage)
                    result++;
                else if ((input - initPage) % (skipPage + 1== 0)
                    result++;
            }
        }
 
        cout << "#" << t + 1 << " " << result << "\n";
    }
    return 0;
}
cs


Comments