[programmers] ์์ ์ฐพ๊ธฐ - Java
์ฃผ์ด์ง ์ซ์๋ค๋ก ๋ง๋ค ์ ์๋ ์์์ ๊ฐ์๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ Java์ set๊ณผ ์ฌ๊ทํจ์๋ฅผ ํตํด ํด๊ฒฐํ๋ค.
Dec 03, 2024
์์ ์ฐพ๊ธฐ
๋ฌธ์ ์ค๋ช
ํ์๋ฆฌ ์ซ์๊ฐ ์ ํ ์ข
์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์์ต๋๋ค. ํฉ์ด์ง ์ข
์ด ์กฐ๊ฐ์ ๋ถ์ฌ ์์๋ฅผ ๋ช ๊ฐ ๋ง๋ค ์ ์๋์ง ์์๋ด๋ ค ํฉ๋๋ค.
๊ฐ ์ข
์ด ์กฐ๊ฐ์ ์ ํ ์ซ์๊ฐ ์ ํ ๋ฌธ์์ด numbers๊ฐ ์ฃผ์ด์ก์ ๋, ์ข
์ด ์กฐ๊ฐ์ผ๋ก ๋ง๋ค ์ ์๋ ์์๊ฐ ๋ช ๊ฐ์ธ์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- numbers๋ ๊ธธ์ด 1 ์ด์ 7 ์ดํ์ธ ๋ฌธ์์ด์ ๋๋ค.
- numbers๋ 0~9๊น์ง ์ซ์๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- "013"์ 0, 1, 3 ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์๋ค๋ ์๋ฏธ์ ๋๋ค.
์ ์ถ๋ ฅ ์
numbers | return |
"17" | 3 |
"011" | 2 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์์ #1
[1, 7]์ผ๋ก๋ ์์ [7, 17, 71]๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์์ #2
[0, 1, 1]์ผ๋ก๋ ์์ [11, 101]๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
- 11๊ณผ 011์ ๊ฐ์ ์ซ์๋ก ์ทจ๊ธํฉ๋๋ค.
solution.java
import java.util.*;
class Solution {
public int solution(String numbers) {
Set<Integer> primes = new HashSet<>();
// numbers์ ๋ชจ๋ ์์ด ์์ฑ
generatePermutations("", numbers, primes);
// ์์์ ๊ฐ์ ์นด์ดํธ
int count = 0;
for (int num : primes) {
if (isPrime(num)) {
count++;
}
}
return count;
}
// ์์ด ์์ฑํ๋ ํจ์
private void generatePermutations(String prefix, String remaining, Set<Integer> primes) {
if (!prefix.isEmpty()) {
primes.add(Integer.parseInt(prefix));
}
for (int i = 0; i < remaining.length(); i++) {
generatePermutations(prefix + remaining.charAt(i),
remaining.substring(0, i) + remaining.substring(i + 1),
primes);
}
}
// ์์์ธ์ง ํ๋ณํ๋ ํจ์
private boolean isPrime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
ํต์ฌ ํค์๋
- ์์ด ์์ฑ ํจ์
- prefix๊ฐ ๋น์ด ์์ง ์์ผ๋ฉด ์ ์๋ก ๋ณํํ์ฌ Set์ ์ถ๊ฐํ๋ค. ์ด๋ฅผ ํตํด ๊ธธ์ด์ ๊ด๊ณ์์ด ๋ชจ๋ ์ซ์๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
- ๋๋จธ์ง ๋ฌธ์์ด์ ๊ฐ ์ซ์๋ฅผ substringํ ํ, prefix์ ํฉ์ณ๊ฐ๋ฉฐ ์๋ก์ด ์๋ฅผ ๋ง๋ ๋ค.
- ์ดํ ์์ ๋ ๋ฌธ์์ด์ ๋ค์ ์ฌ๊ท ํธ์ถ์ ์ ๋ฌํ๋ค.
- ์์ ํ๋ณ ํจ์
- 2๋ถํฐ num์ ์ ๊ณฑ๊ทผ๊น์ง ๋ฐ๋ณตํ๊ณ , num % i == 0์ธ ๊ฒฝ์ฐ ์์๊ฐ ์๋๋ค.
๊ฒฐ๋ก !
ํด๋น ๋ฌธ์ ๋ฅผ ํตํด ์ฌ๊ทํจ์๋ก set์ ๋ค๋ฃจ๋ ๋ฒ์ ์ตํ ์ ์์๋ค.
Share article