반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/92335
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 분석
주어진 n 을 k 진수로 바꾼 후 문제에서 제공하는 조건에 맞는 수 P 중 소수가 몇 개인지 계산하는 문제이다.

제한사항
- 1 <= n <= 1,000,000
- 3 <= k <= 10
n의 크기가 생각보다 크니 계산을 하다 int 크기를 넘어갈 수 도 있겠다는 생각이 들었다.
문제 접근
우선 주어진 n 을 k 진수로 만들기 위해 n을 k로 나눠가며 나머지 값을 붙여 k 진수 문자열을 만들었다.
k 진수 문자열을 0 기준으로 나누게 되면 P 배열을 얻을 수 있고
P 값들 중 소수인 P를 판별하여 count 해준다.
여기서 계산을 하다보면 P 값이 int 크기를 초과할 수 있다.
코드
import java.util.*;
class Solution {
public int solution(int n, int k) {
int result = 0;
StringBuffer sb = new StringBuffer();
while(n != 0){
sb.insert(0, n % k);
n /= k;
}
String[] splits = sb.toString().split("0");
List<Long> numList = new ArrayList<>();
for (String numStr : splits) {
if (!numStr.equals("")) {
numList.add(Long.parseLong(numStr));
}
}
for (long num : numList) {
if (isPrime(num)) {
result++;
}
}
return result;
}
public static boolean isPrime(long num){
if(num == 1){
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
반응형
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 무인도 여행 (1) | 2024.03.14 |
|---|---|
| [프로그래머스] 다단계 칫솔 판매 (0) | 2024.03.07 |
| [프로그래머스] 두 큐 합 같게 만들기 (1) | 2024.03.07 |
| [프로그래머스] 파괴되지 않은 건물 (0) | 2024.03.07 |
| [프로그래머스] 주차 요금 계산 (0) | 2024.03.07 |