문제 : boj2153
1. 문자를 문제에서 제시된 방법대로 합계를 구할 수 있어야 한다.
-> 문자의 각 character인 c를 확인하면서 아래처럼 구하자.
- 'a'~'z'인 경우 : sum += 1+c-'a';
- 'A'~'Z'인 경우 : sum += 27+c-'A';
2. '1'에서 구한 sum이 소수인지 소수판정을 해야 한다.
-> 이 경우 2부터 sqrt(sum) 까지의 정수로 직접 나눠보고, 이 중 하나라도 sum을 나누어떨어지게(나머지가 0) 하는 값이 있다면 소수가 아니다. sqrt(sum) 까지 확인하는 이유는 '에라토스테네스의 체 혹은 소수판정 시 제곱근 까지만 확인하면 되는 이유' 글에 적어두었다(링크).
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Main {
private boolean isPrime(int n) {
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) return false;
}
return true;
}
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int sum = 0;
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c >= 'a') sum += 1+c-'a';
else sum += 27+c-'A';
}
System.out.println(isPrime(sum)?"It is a prime word.":"It is not a prime word.");
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 9295 - 주사위 (boj java) (0) | 2022.07.07 |
---|---|
[자바] 백준 23795 - 사장님 도박은 재미로 하셔야 합니다 (boj java) (0) | 2022.07.06 |
[자바] 백준 2470 - 두 용액 (boj java) (0) | 2022.07.04 |
[자바] 백준 23802 - 골뱅이 찍기 - 뒤집힌 ㄱ (boj java) (0) | 2022.07.03 |
[자바] 백준 20001 - 고무오리 디버깅 (boj java) (0) | 2022.07.01 |
댓글