[문제 링크]
https://school.programmers.co.kr/learn/courses/30/lessons/92335?language=java
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[코드]
import java.util.*;
class Solution {
public int solution(int n, int k) {
// 1. n을 k진수로 변환
// 2. 변환한 String을 "0" 기준으로 split
// 3. 나뉘어진 String들을 Long 타입으로 바꾸고 소수찾기
// 4. 갯수 구하기
String s = Integer.toString(n, k);
String[] sArr = s.split("0");
int answer = 0;
for(String str : sArr) {
if(!str.isEmpty()) {
Long l = Long.parseLong(str);
if(l != 1 && isOk(l)) {
answer++;
}
}
}
return answer;
}
// 소수인지 아닌지 확인
public boolean isOk(Long l) {
if(l == 2) {
return true;
}
// 제곱근까지만 홀수로 나누어 확인(중요!!!)
for(long i = 3; i <= Math.sqrt(l); i+=2) {
if(l % i == 0) {
return false;
}
}
return true;
}
}
[회고]
처음에 소수를 검증하는 함수에서 타임아웃이 났습니다.
소수를 구할때는 제곱근까지의 홀수로만 나누어 나머지가 없으면 됩니다.
질문과 피드백은 언제나 환영입니다.
감사합니다.
'CodingTest > Programmers' 카테고리의 다른 글
| [Programmers] 양과 늑대 (카카오 2022 공채) (2) | 2025.09.16 |
|---|---|
| [Programmers] 주차 요금 계산 (카카오 2022 공채) (0) | 2025.09.10 |
| [Programmers] 신고 결과 받기 (카카오 2022 공채) (0) | 2025.09.08 |
| [Programmers] 섬 연결하기 (3) | 2025.07.31 |
| [Programmers] 보석 쇼핑 (카카오 인턴) (4) | 2025.07.28 |