끄적끄적 코딩
article thumbnail
728x90

5개(n)의 방이 있을때

1 - 1 2 3 4 5

2 - 2 4

3 - 3

4 - 4

5 - 5

와 같이 각각의 배수인 방에서

문이 열려있다면 닫고

닫혀있다면 여는 문제입니다.

 

bool 형식으로 room을 100개의 방을 만들어 주었고

해당하는 숫자에 방문을 하였을 시 false -> true로, true -> false로 변경해 주었습니다.

마지막에 true(열림)의 갯수를 체크하여 나가는 사람의 수를 확인했습니다.

 

#include  
using namespace std; 

bool room[100]; 

void init()     // 배열 초기화
{ 
     for (int i = 0; i < 100; ++i) { 
          room[i] = false; 
     } 
} 

int main(int argc, char *argv[]) 
{ 
     int cycle, num, escape, round; 
     cin >> cycle;     // 반복 횟수

     for (int i = 0; i < cycle; ++i) { 
          init(); 
          cin >> round;     // 방의 갯수
          num = 0;           
          escape = 0; 
          for (int j = 1; j <= round; ++j) { 
               num = j - 1;      // 배수방 시작위치
               while (num < round) {      // 마지막 방이 될때까지 반복
                    if (room[num] == false) {      // 닫혔으면 열기
                         room[num] = true; 
                    } 
                    else { 
                         room[num] = false;      // 열렸으면 닫기
                    } 
                    num += j;      // 배수만큼 증가
               } 
          } 
          for (int k = 0; k < round; ++k) { 
               if (room[k] == true) { 
                    ++escape;      // 열린 수만큼 탈출 인원 증가
               } 
          } 
     cout << escape << endl;      // 출력
     } 
     return 0; 
}

검색 태그