https://www.acmicpc.net/problem/1977
์ฝ๋
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int M = scan.nextInt();
int N = scan.nextInt();
int sum = 0; // ์์ ์ ๊ณฑ์์ ํฉ
int min = 10001; // ์์ ์ ๊ณฑ์ ์ค ์ต์๊ฐ
boolean flag = false; // ์์ ์ ๊ณฑ์๊ฐ ์๋์ง ํ๋ณ
double dNsqrt = Math.sqrt(N); // N์ ์ ๊ณฑ๊ทผ
int Nsqrt = Integer.parseInt(String.valueOf(Math.round(dNsqrt))); // doubleํ N์ ์ ๊ณฑ๊ทผ => intํ ํ๋ณํ
for(int i=M; i<=N; i++) {
for(int j=1; j<=Nsqrt; j++) {
// i๊ฐ ์์ ์ ๊ณฑ์์ผ๋
if(j*j == i) {
sum += i;
if(min > i) min = i;
flag = true;
break;
}
}
}
if(flag)
System.out.println(sum + "\n" + min);
else
System.out.println("-1");
scan.close();
}
}
ํ์ด
์ฃผ์ด์ง M ~ N ๊น์ง์ ์ซ์ ์ค ์์ ์ ๊ณฑ์๋ฅผ ์ฐพ์ผ๋ฉด ๋๋ค.
M ~ N์ค ์์ ์ ๊ณฑ์๊ฐ ์์ผ๋ฉด flag๊ฐ์ true๋ก ๋ณ๊ฒฝํด ์์ ์ ๊ณฑ์๊ฐ ์๋ค๊ณ ์ ์ฅํ๋ค.
for๋ฌธ ๋ฐ๋ณต์ด ๋๋๊ณ , flag๊ฐ true์ด๋ฉด ์์ ์ ๊ณฑ์๊ฐ ์๋๊ฒฝ์ฐ, false๋ฉด ์์ ์ ๊ณฑ์๊ฐ ์๋ ๊ฒฝ์ฐ์ด๋ค.
N์ ์ต๋ ํฌ๊ธฐ๊ฐ 10,000์ด๋ฏ๋ก ๋ฐ๋ณต๋ฌธ์ 1~100๊น์ง ํ๋๊ฒ๊ณผ, 1~N์ ์ ๊ณฑ๊ทผ์ ๋ฐ์ฌ๋ฆผ๊น์ง ํ๋๊ฒ ๊ณผ ์๊ฐ์ฐจ์ด๊ฐ ๋ณ๋ก ์์ ๊ฒ ๊ฐ์ง๋ง N ์ ๊ณฑ๊ทผ์ ๋ฐ์ฌ๋ฆผ๊น์ง ๋ฐ๋ณตํด์ฃผ์๋ค.
N์ด 100์ผ๋ => 1 ~ 100๊น์ง ๊ฒ์ํ๋๊ฒ์ด ์๋ N์ ์ ๊ณฑ๊ทผ(10)๊น์ง ๋ฐ๋ณตํ๋ฉด์ ์ ๊ณฑ์๋ฅผ ์ฐพ๋๋ก ํ๋ค.
double dNsqrt = Math.sqrt(N); // N์ ์ ๊ณฑ๊ทผ
dNsqrt๋ณ์๋ ์ ๋ ฅ๋ฐ์ N์ double ํ์ผ๋ก ์ ๊ณฑ๊ทผ์ ์ฐพ๋๋ค.
doubleํ ์์์ด๋ฏ๋ก, ์ ์๋ก ํ๋ณํ ํด์ค๋ค.
int Nsqrt = Integer.parseInt(String.valueOf(Math.round(dNsqrt))); // doubleํ N์ ์ ๊ณฑ๊ทผ => intํ ํ๋ณํ
์ ๋ฌธ์ฅ์ ํตํด ์ ์๋ก ํ๋ณํ์ด ๋๋ค.
Math.round() ํจ์๋ ๋ฐ์ฌ๋ฆผ์ ํด์ฃผ๋ ํจ์๋ค.
Math.sqrt() ํจ์์
double -> int ํ๋ณํ ํ๋ ์์๋ฅผ ๋ณด๋ฉด ์ ์ ์๋ค.
public class Test {
public static void main(String[] args) {
int num1 = 64;
int num2 = 65;
int num3 = 80;
int num4 = 81;
double dNum1 = Math.sqrt(num1); // 8.0
double dNum2 = Math.sqrt(num2); // 8.xxx
double dNum3 = Math.sqrt(num3); // 8.xxx
double dNum4 = Math.sqrt(num4); // 9.0
System.out.println(dNum1);
System.out.println(dNum2);
System.out.println(dNum3);
System.out.println(dNum4);
int num6 = Integer.parseInt(String.valueOf(Math.round(dNum1)));
int num7 = Integer.parseInt(String.valueOf(Math.round(dNum2)));
int num8 = Integer.parseInt(String.valueOf(Math.round(dNum3)));
int num9 = Integer.parseInt(String.valueOf(Math.round(dNum4)));
System.out.println("==================================");
System.out.println(num6); // 8
System.out.println(num7); // 8
System.out.println(num8); // 9
System.out.println(num9); // 9
}
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 10798๋ฒ: ์ธ๋ก์ฝ๊ธฐ (0) | 2020.01.18 |
---|---|
[๋ฐฑ์ค] 2851๋ฒ: ์ํผ ๋ง๋ฆฌ์ค (0) | 2020.01.18 |
[๋ฐฑ์ค] 2846๋ฒ: ์ค๋ฅด๋ง๊ธธ (0) | 2020.01.17 |
[๋ฐฑ์ค] 14697๋ฒ: ๋ฐฉ ๋ฐฐ์ ํ๊ธฐ (0) | 2020.01.17 |
[๋ฐฑ์ค] 15953๋ฒ: ์๊ธ ํํฐ (0) | 2020.01.17 |
๋๊ธ