https://school.programmers.co.kr/learn/courses/30/lessons/92335?language=java
πΉ kμ§μμμ μμ κ°μ ꡬνκΈ° λ¬Έμ λΆμ λ° νμ΄
π λ¬Έμ κ°μ
β’ μμ°μ nμ kμ§μλ‘ λ³νν ν, μ«μλ€μ 0μ κΈ°μ€μΌλ‘ λλλ€.
β’ λλ μ§ μ«μλ€ μ€μμ μμμ κ°μλ₯Ό ꡬνλ λ¬Έμ .
π λ¬Έμ νμ
β’ λ¬Έμμ΄ μ²λ¦¬
β’ μ§λ² λ³ν
β’ μμ νλ³
β’ μνμ κ³μ°
π λ¬Έμ λΆμ
1. nμ kμ§λ²μΌλ‘ λ³νν΄μΌ νλ€.
2. λ³νλ kμ§μμμ 0μ κΈ°μ€μΌλ‘ μ«μλ€μ λΆλ¦¬νλ€.
3. λΆλ¦¬λ μ«μλ€μ΄ μμμΈμ§ νλ³ν΄μΌ νλ€.
4. μμ κ°μλ₯Ό μΉ΄μ΄νΈνμ¬ λ°ννλ€.
π λ¬Έμ νμ΄ (Bullet Point)
1. nμ kμ§μλ‘ λ³ν
β’ Long.toString(n, k)λ₯Ό μ¬μ©νμ¬ kμ§λ²μΌλ‘ λ³ν.
β’ μμ: n = 437674, k = 3 β 211020101011
2. 0μ κΈ°μ€μΌλ‘ μ«μλ₯Ό λΆλ¦¬
β’ split("0")μ μ¬μ©νμ¬ 0μ κΈ°μ€μΌλ‘ λλ.
β’ μμ: "211020101011" β ["211", "2", "1", "101", "11"]
β’ λΉ λ¬Έμμ΄("")μ΄ λμ¬ μλ μμΌλ―λ‘ μ²λ¦¬ νμ.
3. κ° μ«μλ₯Ό μμ νλ³
β’ 1μ μμκ° μλ β μμΈ μ²λ¦¬.
β’ μμ νλ³μ Math.sqrt(num)κΉμ§ λ°λ³΅λ¬Έμ λλ©° νμΈ.
4. μμ κ°μ μΉ΄μ΄νΈ ν λ°ν
β’ μμμΈ κ²½μ° κ°μλ₯Ό μ¦κ°μν€κ³ μ΅μ’
μ μΌλ‘ λ°ν.
π μκ° λ³΅μ‘λ λΆμ
β’ μ§λ² λ³ν: O(log n)
β’ λ¬Έμμ΄ λΆλ¦¬: O(n)
β’ μμ νλ³: νκ· μ μΌλ‘ O(βm) (mμ λ³νλ μ«μμ ν¬κΈ°)
β’ μ 체 볡μ‘λ: O(n log n) μ λλ‘ λ³Ό μ μμ. (μ΅μ
μ κ²½μ°)
π μμ
μ
λ ₯
n = 437674, k = 3
λ³νλ kμ§μ
"211020101011"
λΆλ¦¬λ μ«μ
["211", "2", "1", "101", "11"]
μμ νλ³
211 (μμ) β
2 (μμ) β
1 (μμ μλ) β
101 (μμ) β
11 (μμ) β
μΆλ ₯
4
β μ΅μ’
μ μΌλ‘ μμ κ°μλ 4!
Java
class Solution {
public int solution(int n, int k) {
int answer = 0;
// μ£Όμ΄μ§ μ«μ nμ kμ§λ²μΌλ‘ λ³ννμ¬ λ¬Έμμ΄λ‘ μ μ₯
String x = Long.toString(n, k);
// λ³νλ μ«μλ₯Ό '0'μ κΈ°μ€μΌλ‘ λΆν νμ¬ λ°°μ΄λ‘ μ μ₯
String[] arr = x.split("0");
// λ°°μ΄μ μννλ©΄μ μμμΈ κ²½μ° answer μ¦κ°
for (String str : arr) {
if (str.isEmpty()) continue; // λΉ λ¬Έμμ΄μ΄λ©΄ 건λλ
// λ¬Έμμ΄μ μ«μλ‘ λ³νν ν μμ νλ³
if (isPrime(Long.parseLong(str))) {
answer += 1; // μμμΌ κ²½μ° κ°μ μ¦κ°
}
}
return answer; // μ΅μ’
μμ κ°μ λ°ν
}
// μμ νλ³ ν¨μ
static boolean isPrime(long num) {
if (num == 1) return false; // 1μ μμκ° μλ
// 2λΆν° βnumκΉμ§ λλ μ λλμ΄ λ¨μ΄μ§λ©΄ μμκ° μλ
for (int i = 2; i <= (int) Math.sqrt(num); i++) {
if (num % i == 0) {
return false; // λλμ΄ λ¨μ΄μ§λ©΄ μμκ° μλ
}
}
return true; // λλμ΄ λ¨μ΄μ§λ μκ° μμΌλ©΄ μμ
}
}