본문 바로가기
백준

백준 13909: 창문 닫기(java, python)

by unhyepnhj 2024. 9. 19.

문제


풀이

 

모든 창문이 닫힌 상태에서 시작한다는 것이 포인트이다. 창문이 마지막까지 열려 있으려면 창문의 상태를 바꿀 수 있는 사람이 홀수 명이어야 하므로, k번째 창문에 대해 k의 약수가 홀수 개이면 열려 있게 되고, 짝수 개이면 닫힌 채로 끝나게 된다. 따라서 n개의 창문이 주어졌을 때, n 이하의 약수가 홀수 개인 수의 개수를 구하면 해결된다.

 

어떤 수의 약수가 홀수 개이려면 그 수가 완전제곱수여야 한다.

k의 약수들은 곱해서 k가 되는 쌍끼리 짝을 이루므로, k의 약수 개수가 홀수이려면 k가 완전제곱수여야 하는 것이다.

 

따라서 N 이하 완전제곱수의 개수가 정답이 된다.

 

1. java

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		
		int N=scanner.nextInt();
		
		int count=1;
	
		while(count*count<=N) {
			count++;
		}
		
		System.out.println(count-1);
	}
}

 

2. python

import math

N = int(input())

result = int(math.sqrt(N))

print(result)

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

백준 1149: RGB거리(java/python)  (0) 2024.09.26
백준 1914: 하노이 탑(java/python)  (0) 2024.09.20
백준 2003: 수들의 합(java)  (0) 2024.09.09
백준 9655: 돌 게임(java)  (0) 2024.09.05
백준 18870: 좌표 압축(java)  (0) 2024.09.03