문제
풀이
모든 창문이 닫힌 상태에서 시작한다는 것이 포인트이다. 창문이 마지막까지 열려 있으려면 창문의 상태를 바꿀 수 있는 사람이 홀수 명이어야 하므로, 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 |