백준/Inha Algorithm Study Group

DAY5 초급 - 백준 17273번 (C++)

FDEE 2020. 9. 7. 21:27

www.acmicpc.net/problem/17273

 

17273번: 카드 공장 (Small)

진서는 CTP 카드 공장의 노동자이다. 공장에는 N개의 카드가 있으며 각 카드에는 앞면과 뒷면에 숫자가 쓰여있다. 공장장 노진의 명령에 따라서 진서는 카드를 뒤집어야 한다. 명령은 M번 내려지�

www.acmicpc.net

 

<답안>

#include <iostream>
using namespace std;
int main()
{
    int N,M,K;
    int front[100] = {0};
    int back[100] = {0};
    int result[100];
    int sum = 0;
    cin>>N>>M;
    for(int i=0; i<N; i++)
    {
        cin>>front[i]>>back[i];
        result[i] = front[i];
    }
    while(M--)
    {
        cin>>K;
        for(int i=0; i<N; i++)
        {
            //뒤집기
            if(result[i] <= K)
            {
                if(result[i] == front[i])
                    result[i] = back[i];
                else
                    result[i] = front[i];
            }
        }
    }
    for(int i=0; i<N; i++)
        sum += result[i];
    cout<<sum;
    return 0;
}

 

<설명>

N번 반복하며 앞면 front[i]와 뒷면 back[i]를 입력받는다

그리고 현재 카드앞면을 저장할 result[i]를 front[i]로 설정해 놓는다

 

M번 반복하며 K를 입력받아 카드 인덱스 i=0 ~ N-1까지 확인하며
만약 result[i]값이 K보다 작거나 같은경우 result[i]값에 따라 뒤집는다

 

그렇게 최종적으로 남은 result[i] 값들을 다 더하여 출력한다