๋ฌธ์ ์ ๊ทผ
https://school.programmers.co.kr/learn/courses/30/lessons/92335
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๊ทธ๋ ๊ฒ ์ด๋ ค์ด ๋์ด๋์ ๋ฌธ์ ๋ ์๋์์
=> ์ ๋ง ๋ฌธ์ ์ ์ฃผ์ด์ง๋๋ก ๊ตฌํํ๊ณ ์๋ฃํ์ ์ ์ฌ์ฉํ๋ฉด ํ ์ ์์
๋ฌธ์ ํ์ด
์ฐ์ ์ง๋ฒ์ ๋ฐ๊ฟ ๋ 0์ด ํฌํจ๋์ง ์๋ ๊ฐ์ ๊ธธ์ด๊ฐ int์ ์ต๋๊ฐ์ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ longํ์ ์ฌ์ฉ์ ๊ฒฐ์ ํ๊ณ ์์ํ์
๊ทธ ๋ค์ ํฌ๊ฒ 2๊ฐ์ง์ ๊ตฌํ์ผ๋ก ๋๋์๋๋ฐ
isPrime์ด๋ผ๋ ์์์ธ์ง๋ฅผ ํ๋ณํด์ฃผ๋ ํจ์์ changeNumber๋ผ๋ ์ง๋ฒ์ ๋ณํํ๋ ํจ์์
์ฌ์ค toString์ ์ฌ์ฉํ๋ฉด ์ฝ๊ฒ ์ง๋ฒ์ ๋ฐ๊ฟ ์ ์์๋๋ฐ ์ด๋ฅผ ๋ชฐ๋ผ์ ์ง์ ํจ์๋ฅผ ๊ตฌํํ์
Long.toString(long n, int k)์ ์ซ์ n์ k์ง๋ฒ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ์ฃผ๋ ์ญํ ์ํจ
isPrime์ ๊ตฌํํ ๋๋ Math.sqrt(์ ๊ณฑ๊ทผ)์ ์ฌ์ฉํ์ฌ ํ์ ๋ฒ์๋ฅผ ์ถ์ํ์
์ฃผ์ด์ง ์๋ฅผ k์ง๋ฒ์ผ๋ก ๋ฐ๊พผ ํ ์ด๋ฅผ split์ ์ฌ์ฉํด์ 0์ ๊ธฐ์ค์ผ๋ก String ๋ฐฐ์ด์ ๋ง๋ค์์
=> ์ด ๋ ์ ๊ทํํ์์ ์ฌ์ฉํด์ split("0+")์ ์ฌ์ฉํ๋ฉด 1001 ๊ฐ์ด 0์ด ์ฐ์ 2๊ฐ ๋์ค๋๊ฒฝ์ฐ๋ "1", "1" ๋ก ์ชผ๊ฐ์ง์ง๋ง ํด๋น ๋ด์ฉ์ ๋ชฐ๋์ด์ split("0")์ผ๋ก ๋๋ ํ์ ""(๋น ๋ฌธ์์ด)์ด๋ฉด continue๋ฅผ ํ๋ ๋ฐฉ์์ผ๋ก ์งํํจ
๊ทธ๋ฆฌ๊ณ ๋๋ ์๋ค์ ๋๋ฉด์ ์์๋ผ๋ฉด ์ ๋ต answer์ +1 ํด์ ๋ฐํํ๋ฉฐ ๋ง๋ฌด๋ฆฌํจ
์ ์ฒด ์ฝ๋
class Solution {
int n, k;
boolean isPrime(long num) {
if(num < 2) {
return false;
}
for(long i = 2; i <= (long) Math.sqrt(num); i++) {
if(num % i == 0) {
return false;
}
}
return true;
}
String changeNumber() {
StringBuilder sb = new StringBuilder();
while(n != 0) {
sb.append(n % k);
n /= k;
}
return sb.reverse().toString();
}
public int solution(int n, int k) {
int answer = 0;
this.n = n;
this.k = k;
String number = changeNumber();
String[] arr = number.split("0");
for(String s : arr) {
if(s.equals("")) continue;
if(isPrime(Long.parseLong(s))) {
answer++;
}
}
return answer;
}
}'๐ฅ Algorithm > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ค์ต์ฉ ๋ก๋ด (JAVA ํ์ด) (0) | 2025.11.02 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ธํจ์ด ์ํ๋ฒณ (JAVA ํ์ด) (0) | 2025.10.29 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (JAVA ํ์ด) (0) | 2025.10.24 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (JAVA ํ์ด) (0) | 2025.10.16 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ํคํจ๋ ๋๋ฅด๊ธฐ (JAVA ํ์ด) (0) | 2025.10.16 |