본문 바로가기

Algorithm

(C++) - 백준(BOJ) 6359 : 만취한 상범 답

반응형
#include <iostream>
using namespace std;
int main() {//2,4,6, 3,6,9
    int T, jail, cnt = 0;
    cin >> T;
    for (int p = 0; p < T; p++)
    {
        cin >> jail;
        int *room = new int[jail];//감옥 방 만들기
        for (int i = 0; i < jail; i++)
        {
            room[i] = 0;//0은 열림 1은 닫힘
        }
        for (int k = 2; k < jail+2; k++)//라운드 jail만큼
        {
            for (int i = 0; i < jail; i++)
            {
                if (k * (i + 1) - 1 < jail)
                {
                    if (room[k * (i + 1) - 1] == 0)
                    {
                        room[k * (i + 1) - 1] = 1;//열려있으면 닫음
                    }
                    else if (room[k * (i + 1) - 1] == 1)
                    {
                        room[k * (i + 1) - 1] = 0;//닫혀있으면 염
                    }
                }
                

            }
        }
        for (int i = 0; i < jail; i++)
        {
            if (room[i] == 0)
                cnt++;
        }
        cout << cnt << '\n';
        cnt = 0;
    }
}