Java/Java 알고리즘
백준 2153번 소수 단어JAVA 구현해보기
kimc
2022. 6. 3. 22:03
```
백준 2153번 소수 단어 JAVA 구현해보기
```

이번 글을 통해 배워갈 내용
- 백준 2153번 풀이
https://www.acmicpc.net/problem/2153
2153번: 소수 단어
소수란 1과 자기 자신으로만 나누어떨어지는 수를 말한다. 예를 들면 1, 2, 3, 5, 17, 101, 10007 등이 소수이다. 이 문제에서는 편의상 1도 소수로 하자. 알파벳 대소문자로 이루어진 영어 단어가 하나
www.acmicpc.net
백준 2153번 소수단어는
난이도 브론즈 등급의 문제로서
알파벳이 주어지면
소문자 알파벳이면 a 가 1부터 z 26으로 부여하고
대문자 알파벳이면 A 가 27부터 Z 52로 하여
합을 구한 다음
해당되는 문자열의 합이 소수면
It is a prime word.
아니면
It is not a prime word.
을 출력하는 문제입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
입력을 받고
정해진 조건에 맞춰서 문자열의 합을 숫자로 만든 다음
소수인지 판별해주었습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
final String input01 = br.readLine();
System.out.print(solution(input01));
}
public static String solution(String input01) {
final String PRIME = "It is a prime word.";
final String NOT_PRIME = "It is not a prime word.";
int sum = input01.chars()
.map(Main::findAlphaNum)
.sum();
return isPrime(sum) ? PRIME : NOT_PRIME;
}
private static int findAlphaNum(int i) {
if (isLowerAlphabet(i)) {
i = i - 'a' + 1;
} else if (isUpperAlphabet(i)) {
i = i - 'A' + 27;
} else {
i = 0;
}
return i;
}
private static boolean isLowerAlphabet(int i) {
return (i >= 'a') && (i <= 'z');
}
private static boolean isUpperAlphabet(int i) {
return (i >= 'A') && (i <= 'Z');
}
private static boolean isPrime(int num) {
boolean isPrime = true;
for (int i = 2; i < num; i++) {
if (num % i == 0) {
isPrime = false;
break;
}
}
return isPrime;
}
}
// https://codemasterkimc.tistory.com
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
728x90