[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