자바 백준 1977번
브론즈 2
https://www.acmicpc.net/problem/1977
문제 보기
분류: 수학, 구현, 브루트포스 알고리즘
문제 풀기
주어진 범위의 수를 하나씩 선택하여 Math.sqrt() 를 이용하여 제곱근을 구한다. 완전 제곱수인지 확인하기 위해 구한 제곱근을 int 타입으로 변경하고 제곱한 값이 초기에 선택한 값과 일치하는지 확인한다. 만약 일치한다면 완전 제곱수이므로 최솟값 또는 누적합으로 저장을 한다.
완전 제곱수 존재 여부에 따라 결과 조건에 맞게 출력한다.
코드 보기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 입력으로 M과 N을 받음
int M = sc.nextInt(); // M은 범위의 시작 값
int N = sc.nextInt(); // N은 범위의 끝 값
// 합과 최소 완전제곱수를 초기화
int sum = 0;
int minPerfectSquare = -1;
// M부터 N까지의 범위에서 완전제곱수를 찾음
for (int i = M; i <= N; i++) {
int sqrt = (int) Math.sqrt(i); // i의 제곱근을 계산
if (sqrt * sqrt == i) { // i가 완전제곱수인 경우
if (minPerfectSquare == -1) {
minPerfectSquare = i; // 첫 번째 완전제곱수를 찾으면 최솟값으로 설정
}
sum += i; // 완전제곱수를 합에 추가
}
}
// 완전제곱수가 없을 경우 -1을 출력, 아닌 경우 합과 최솟값을 출력
if (minPerfectSquare == -1) {
System.out.println(-1);
} else {
System.out.println(sum);
System.out.println(minPerfectSquare);
}
}
}
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 17219 - 비밀번호 찾기 (0) | 2023.09.21 |
---|---|
[Java] 백준 풀기 1526 - 가장 큰 금민수 (0) | 2023.09.20 |
[Java] 백준 풀기 20115 - 에너지 드링크 (0) | 2023.09.13 |
[Java] 백준 풀기 11256 - 사탕 (0) | 2023.09.12 |
[Java] 백준 풀기 28014 - 첨탑 밀어서 부수기 (0) | 2023.09.11 |