Deep Learning through deep learning

백준 15820번 맞았는데 왜 틀리죠? 본문

Baekjoon_algorithm_heuristic

백준 15820번 맞았는데 왜 틀리죠?

NeuroN 2023. 2. 2. 11:21

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

코드 해석

더보기
  1. 백준의 대부분의 문제들은 문제와, 샘플 예시들을 보여준다. 하지만, 샘플 예시를 만족시키더라도 반례가 있어 문제가 정답처리되지 않는 경우가 있다.
  2. 첫번째 줄에 2개의 수가 주어지는데, 첫번째는 S1 (샘플 테스트케이스), 두번째는 s2 (시스템 테스트케이스)가 주어진다. 샘플 테스트케이스는 백준에서 보여주는 샘플 예시이며, 시스템 테스트케이스는 그 외 반례를 의미한다.
  3. 두번째 줄부터 s1+s2번째 줄에는, 각각 2개의 수가 주어지는데, 정답과 민영의 답이다. 둘이 같다면 테스트케이스를 만족한 경우이다.
  4. 이때 3가지 조건이 주어지는데, [1] s1,s2 답이 모두 같은 경우 "Accepted"를 출력, [2] s1의 답이 틀렸다면, "Wrong Answer"을 출력, [3] s1은 맞았지만 s2의 답이 틀린경우, "Why Wrong!!!"을 출력해야한다.
  5. 참고할 점은, 두번째 줄부터 s1이 주어지고, s2가 이어서 주어진다.
  6. for반복문을 이용해서, s1수만큼 반복문 돌릴때, 변수 a,b를 입력해주어 두 수가 같지 않으면 새로운 변수 c1 = 1을 할당한다. (c1은 기존에 0임)
  7. 마찬가지로 for반복문으로 s2의 경우도 같은 조건으로 새로운 변수 c2 = 1을 할당한다.
  8. 마지막으로 if 조건문을 이용하여, c1,c2의 여부에따라 0또는 1일테고, [1] 둘다 0이면 모든 문제가 정답 "Accepted"를 출력, [2] c1=0이지만, c2=1이면 반례를 못찼은 것이며 "Why Wrong!!!"을 출력, [3] 나머지 경우에는 "Wrong Answer"을 출력해주면 된다.

코드

#include <iostream>
#include <math.h>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int s1, s2;
    cin >> s1 >> s2;
    int a, b;
    int c1 = 0;
    int c2 = 0;
    for (int i = 0; i < s1; i++)
    {
        cin >> a >> b;
        if (a != b)
        {
            c1 = 1;
        }
    }
    for (int i = 0; i < s2; i++)
    {
        cin >> a >> b;
        if (a != b)
        {
            c2 = 1;
        }
    }
    if (c1 == 0 and c2 == 0)
    {
        cout << "Accepted";
    }
    else if (c1 == 0 and c2 == 1)
    {
        cout << "Why Wrong!!!";
    }
    else
    {
        cout << "Wrong Answer";
    }

}

'Baekjoon_algorithm_heuristic' 카테고리의 다른 글

백준 13752번 히스토그램  (0) 2023.02.02
백준 10708번 크리스마스 파티  (0) 2023.02.02
백준 23806번 골뱅이 찍기 - ㅁ  (0) 2023.02.02
백준 5565 영수증  (2) 2023.02.02
백준 10992 별 찍기-17  (0) 2023.02.02