[programmers] ์†Œ์ˆ˜ ์ฐพ๊ธฐ - Java

์ฃผ์–ด์ง„ ์ˆซ์ž๋“ค๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์†Œ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ Java์˜ set๊ณผ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐํ–ˆ๋‹ค.
DriedPollack's avatar
Dec 03, 2024
[programmers] ์†Œ์ˆ˜ ์ฐพ๊ธฐ - Java

์†Œ์ˆ˜ ์ฐพ๊ธฐ

๋ฌธ์ œ ์„ค๋ช…

ํ•œ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ ํžŒ ์ข…์ด ์กฐ๊ฐ์ด ํฉ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. ํฉ์–ด์ง„ ์ข…์ด ์กฐ๊ฐ์„ ๋ถ™์—ฌ ์†Œ์ˆ˜๋ฅผ ๋ช‡ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค ํ•ฉ๋‹ˆ๋‹ค.
๊ฐ ์ข…์ด ์กฐ๊ฐ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ ํžŒ ๋ฌธ์ž์—ด 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

More articles

See more posts

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ปDriedPollack's Blog