https://school.programmers.co.kr/learn/courses/30/lessons/92335
어떤 양의 정수 n을 k진수로 바꿨을 때, 조건에 맞는 소수가 몇 개인지를 구하는 문제
while(n > 0) {
remainder = n % k;
n = n / k;
sb.append(remainder);
}
sb.reverse();
먼저 n을 k진수로 바꾸어 주었다
String s = sb.toString();
String[] st = s.split("0");
for (int i = 0; i < st.length; i++) {
if (st[i].equals("")) st[i] = "0";
}
그런 다음에 0으로 split 해주고 ""이 된다면 다시 0을 집어넣어 줬다
public static int func(long n) {
if (n <= 1) return 0;
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
그리고 st를 순차적으로 탐색하여 소수인지를 판단하고 소수면 1을 아니면 0을 answer에 더해주어 정답을 찾았다
아래는 전체 코드
class Solution {
public int solution(int n, int k) {
int answer = 0, remainder;
StringBuilder sb = new StringBuilder();
while(n > 0) {
remainder = n % k;
n = n / k;
sb.append(remainder);
}
sb.reverse();
String s = sb.toString();
String[] st = s.split("0");
for (int i = 0; i < st.length; i++) {
if (st[i].equals("")) st[i] = "0";
}
for (int i = 0; i < st.length; i++) {
answer += func(Long.parseLong(st[i]));
}
return answer;
}
public static int func(long n) {
if (n <= 1) return 0;
for (int i = 2; i <= Math.sqrt(n); i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
}
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 할인 행사 (1) | 2024.01.14 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 두 큐 합 같게 만들기 (0) | 2024.01.14 |
[프로그래머스][JAVA]Lv. 2 - n^2 배열 자르기 (0) | 2023.12.10 |
[프로그래머스][JAVA]Lv. 2 - 피로도 (0) | 2023.12.10 |
[프로그래머스][JAVA]Lv. 2 - 모음사전 (0) | 2023.11.12 |