Java/Java 알고리즘

백준 2153번 소수 단어JAVA 구현해보기

kimc 2022. 6. 3. 22:03

```

백준 2153번 소수 단어 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1. 백준 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