본문 바로가기
[ 다먹살 ]/- Coding

[백준] 6359 만취한 상범

by 엉망으로살기 2021. 10. 29.
반응형

https://www.acmicpc.net/problem/6359

 

6359번: 만취한 상범

한 줄에 한 개씩 각 테스트 케이스의 답, 즉 몇 명이 탈출할 수 있는지를 출력한다.

www.acmicpc.net

 

방의 개수가 최대 100로 제한되어있었기 때문에 시간복잡도에 대한 고민은 하지않아도 되는 문제였던 것 같다. 처음에는 방의 열림여부를 int로 할까하다가 boolean형으로 설정하면 반대값 설정 시 더 편리해서 이걸 사용해서 해결했다.


문제 및 입출력

 


코드

import java.util.Arrays;
import java.util.Scanner;

public class Main 
{
       public static void main(String[] args)
       {
            Scanner sc = new Scanner(System.in);
            StringBuilder sb = new StringBuilder();
            int t = sc.nextInt();

            for(int i=0; i<t; i++)
            {
                 int n = sc.nextInt();
                 int people = 0;

                 // 각 방에 대한 설정
                 boolean[] room = new boolean[n+1];
                 Arrays.fill(room, false);
            
                 // 1~n라운드까지 방의 인덱스를 기준으로 나눠질 때 현재값과 반대로 설정
                 for(int round=1; round<=n; round++)
                 {
                     for(int j=0; j<room.length; j++)
                     {
                          if(j%round==0)
                          {
                               room[j] = !room[j];
                          }
                     }
                 }

                 // 마지막 라운드 종료 후 열린 방의 개수를 결과값으로 출력
                 for(int j=1; j<room.length; j++)
                 {
                      if(room[j])
                     {
                          people++;
                     }
                 }
            
                 sb.append(people + "\n");
            }
        
        System.out.println(sb.toString());
        sc.close();
     }
}

 

반응형

댓글