Step-by-Step

[Java] 프로그래머스 - k진수에서 소수 개수 구하기 본문

언어/JAVA

[Java] 프로그래머스 - k진수에서 소수 개수 구하기

희주(KHJ) 2022. 9. 22. 01:17

https://school.programmers.co.kr/learn/courses/30/lessons/92335

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

양의 정수 n진수 k로 바꿨을 때, 0을 경계선으로 각 블럭마다 있는 소수(Prime number) 구하기이다.

 

문제풀이 방식은 다음과 같다.

1. 정수 n을 k 진수로 바꾼 String 문자열 구하기

2. 문자열을 0을 기준으로 나눔 (※ 빈 문자열 있음 주의)

3. 각 문자열이 소수인지 판별

 

class Solution {
    public int solution(int n, int k) {
		String str = changeNum(n, k);
		int res = 0;

		String[] split = str.split("0");
		for (int i = 0; i < split.length; i++) {
            if(split[i].equals("")) continue;
			if (isPrime(Long.parseLong(split[i].toString())))
				res++;
		}
        return res;
    }
    
    public boolean isPrime(long n) {
		if (n <= 1)
			return false;
		else if (n == 2)
			return true;
		for (long i = 2; i < Math.sqrt(n); i++) {
			if (n % i == 0)
				return false;
		}
		return true;
	}

	public String changeNum(int n, int k) {
		StringBuilder sb = new StringBuilder();
		
		while (n > 0) {
			sb.insert(0, n % k);
			n /= k;
		}
		return sb.toString();
	}
}

 

- 소수 판별 메소드는 익혀두면 좋은 듯하다

 

'언어 > JAVA' 카테고리의 다른 글

[Java] 백준1926 - 그림  (1) 2022.09.23
[Java] 프로그래머스 - 주차 요금 계산  (0) 2022.09.22
[Java] 소수 판별 메소드  (1) 2022.09.22
[Java] 백준 17780 - 새로운 게임  (0) 2022.07.05
[Java] 백준 15591 - Mootube(Silver)  (0) 2022.06.30
Comments