본문 바로가기
Computer/Algorithm_Java

[BaekJoon] 13909번 창문 닫기 문제 풀이 (Success)

by HJ0216 2023. 9. 23.
 

13909번: 창문 닫기

서강대학교 컴퓨터공학과 실습실 R912호에는 현재 N개의 창문이 있고 또 N명의 사람이 있다. 1번째 사람은 1의 배수 번째 창문을 열려 있으면 닫고 닫혀 있으면 연다.  2번째 사람은 2의 배수 번째

www.acmicpc.net

 

Language: Java

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        int N = Integer.valueOf(br.readLine());
 
        int count = 0//창문이 열려있는 개수
        for(int i = 1; i * i <= N; i++) { //제곱수만 카운트
            count++;
        }
 
        br.close();
 
        bw.write(count + "\n");
 
        bw.flush();
        bw.close();
    }
 
}
 
 

🤔 해설

1. for(int i = 1; i * i <= N; i++) { ... }

    - 약수의 개수가 홀수인 경우는 제곱수

 

😮  외의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        int N = Integer.valueOf(br.readLine());
 
        br.close();
 
        bw.write(((int) Math.floor(Math.sqrt(N))) + "");
 
        bw.flush();
        bw.close();
    }
 
}
 
 

1. bw.write(((int) Math.floor(Math.sqrt(N))) + "");

    - 제곱수의 개수 = 제곱근의 내림값

 

 

 

🔗 소스 코드
GitHub

 

📚 참고 자료

 

[JAVA] 백준 13909. 창문 닫기

※개인공부목적의정리글입니다.이글의내용이최선의해답은아닐수있습니다.문제서강대학교컴퓨터공학과실습실R912호에는현재N개의창문이있고또N명의사람이있다.1번째사람은1의배수번째창문

yuria.dev