알고리즘/koitp

koitp SDS_TEST_PAGE 쉬어가는페이지

꾸준함. 2018. 7. 28. 03:51

문제 링크입니다: https://koitp.org/problem/SDS_TEST_PAGE/read/


등차 수열을 생각해보면 쉬운 문제였습니다.


알고리즘은 아래와 같습니다.

1. J = 0인 경우, 모든 페이지를 확인해야하지만 시작 페이지 이상인 페이지들만 셉니다.

2. J > 0인 경우, 시작 페이지 이상이고 N 이하인 페이지들만 셉니다.

i) 입력 받은 페이지가 등차 수열에 포함되는 숫자인지 확인합니다.

ii) (입력 받은 페이지 - 시작 페이지)가 등차(J+1)로 나누어 떨어진다면 i)가 성립합니다.


#include <iostream>

using namespace std;

 

const int MAX = 1000;

 

int N, S, J, K;

 

int main(void)

{

        ios_base::sync_with_stdio(0);

        cin.tie(0); //cin 실행속도 향상

        int test_case;

        cin >> test_case;

 

        for (int i = 1; i <= test_case; i++)

        {

                 cin >> N >> S >> J >> K;

                

                 int cnt = 0;

                 //모든 페이지를 확인한다고 해도

                 if (J == 0)

                 {

                         //시작하는 페이지 이상이여야지 읽을 수 있다

                         for (int j = 0; j < K; j++)

                         {

                                 int page;

                                 cin >> page;

 

                                 if (S <= page)

                                          cnt++;

                         }

                 }

                 //등차 수열을 생각하면 쉽다

                 else

                 {

                         for (int j = 0; j < K; j++)

                         {

                                 int page;

                                 cin >> page;

 

                                 //해당 페이지 포함

                                 if (S == page)

                                          cnt++;

                                 //시작 페이지 < page <= N

                                 //등차가 (J + 1)인 수열이라면

                                 if (page <= N && S < page && (((page - S) % (J + 1)) == 0))

                                          cnt++;

                         }

                 }

                 cout << "#" << i << " " << cnt << "\n";

        }

        return 0;

}



개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형