-
[프로그래머스] k진수에서 소수 개수 구하기_Java코딩테스트 2024. 5. 3. 21:19
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/92335#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
1. 양의 정수 n을 k진수로 변환하여 소수의 개수를 모두 return하라.
2. 소수의 조건은 아래와 같다.
3. 소수를 판단하는 기준은 k진법으로 보았을 때가 아닌 10진법으로 보았을 때를 만족해야 한다.
4. 1 ≤ n ≤ 1,000,000
3 ≤ k ≤ 10문제 풀이
1. Integer.toString(int, int)를 이용하여 정수 n을 k진법의 수로 변환하여 "0"을 기준으로 나눈다.
2. "100011"과 같이 "0"이 연달아 나오는 경우를 제외하기 위해 str가 ""인 경우를 체크한다.
3. n의 최댓값인 1,000,000을 3진수로 변환할 경우 integer 범위를 넘어가기 때문에 Long 타입으로 변환하여 소수임을 체크해야 한다.
코드
import java.util.Arrays; class Solution { public int solution(int n, int k) { String [] numberArr = Integer.toString(n,k).split("0"); int cnt = (int) Arrays.stream(numberArr).filter(it->isPrime(it)).count(); return cnt; } private boolean isPrime(String str){ if("".equals(str)) return false; long n = Long.valueOf(str); if(n < 2) return false; for(long i = 2; i*i <= n; i++){ if(n%i == 0) return false; } return true; } }
실행 결과
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 거스름돈_Java (0) 2024.05.05 [프로그래머스] 가장 먼 노드_Java (0) 2024.05.05 [프로그래머스] n^2 배열 자르기_Java (0) 2024.05.03 [백준] 1149 RGB거리_Java (1) 2024.05.01 [백준] 11659 구간 합 구하기 4_Java (1) 2024.05.01