Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 14582
  • 백준 4659
  • 자바
  • 백준 10709
  • 백준 2467
  • 백준 7567
  • 백준 2343
  • 백준 1011
  • 백준 3049
  • Java
  • 백준 1064
  • 백준 7662
  • 백준 16926
  • 백준 16194
  • 백준 3135
  • 백준 2225
  • 백준 15961
  • 백준 1914
  • 백준 6550
  • 백준 15655
  • 백준 12871
  • 백준 8892
  • 백준 15312
  • 백준 1747
  • 백준 1531
  • 백준 12605
  • 백준 1495
  • 백준
  • 백준 2591
  • 백준 24039
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 6459 만취한 상범(Java)
백준

백준 6459 만취한 상범(Java)

2023. 1. 12. 22:03

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

 

6359번: 만취한 상범

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

www.acmicpc.net


 

해석 및 팁

 


 

이 문제의 핵심은 방의개수만큼 배열을 선언해서 배열의 값이 0이면 닫혀있고 1이면 열려있다는것을 표현하는것이다. 첫번째 for문을 통해 테스트케이스인 t만큼 돌아주고 두번째 for문으로 1부터 방의개수인 n만큼 돌아주고 세번째 for문으로 배수알때 문을 열고 닫으면 된다. 마지막으로 배열의값이 1인것의 개수를 세어서 출력해주면 된다.

 


 

Java 코드

 


import java.util.Scanner;

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

    for(int i = 0; i < t; i++) {
      int count = 0;
      int n = sc.nextInt();
      int[] check = new int[n+1];                     //n번째 방을 확인하기위한 배열 선언
      for(int j = 1; j <= n; j++) {
         for(int k = 1; j * k <= n; k++) {            //n까지의 수중 배수 확인
           if(check[k * j] == 0) check[k * j] = 1;    //0 이면 1로 바꿔주고 1이면 0으로 바꿔준다
           else check[k * j] = 0;
         }
      }
      for(int j = 1; j <= n; j++) {
        if(check[j] == 1) count++;                     //1이면 열려있으므로 탈출가능하다.
      }
      System.out.println(count);
    }
    
  }  
}

'백준' 카테고리의 다른 글

백준 5355 화성 수학(Java)  (0) 2023.01.13
백준 17608 막대기(Java)  (0) 2023.01.12
백준 2605 줄 세우기(Java)  (0) 2023.01.12
백준 13300 방 배정(Java)  (0) 2023.01.12
백준 2864 5와 6의 차이(Java)  (0) 2023.01.12
    '백준' 카테고리의 다른 글
    • 백준 5355 화성 수학(Java)
    • 백준 17608 막대기(Java)
    • 백준 2605 줄 세우기(Java)
    • 백준 13300 방 배정(Java)
    Park DJ
    Park DJ

    티스토리툴바