-
[Algo Rhythm๐บ๐] ํ๋ก๊ทธ๋๋จธ์ค ๊ณ ๋์ kit ์์์ฐพ๊ธฐAlgo Rhythm๐บ๐/Programmers 2020. 7. 9. 20:21
๐ ๋ฌธ์ ์ค๋ช
ํ์๋ฆฌ ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์์ต๋๋ค. ํฉ์ด์ง ์ข ์ด ์กฐ๊ฐ์ ๋ถ์ฌ ์์๋ฅผ ๋ช ๊ฐ ๋ง๋ค ์ ์๋์ง ์์๋ด๋ ค ํฉ๋๋ค.
๊ฐ ์ข ์ด ์กฐ๊ฐ์ ์ ํ ์ซ์๊ฐ ์ ํ ๋ฌธ์์ด numbers๊ฐ ์ฃผ์ด์ก์ ๋, ์ข ์ด ์กฐ๊ฐ์ผ๋ก ๋ง๋ค ์ ์๋ ์์๊ฐ ๋ช ๊ฐ์ธ์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
-
numbers๋ ๊ธธ์ด 1 ์ด์ 7 ์ดํ์ธ ๋ฌธ์์ด์ ๋๋ค.
-
numbers๋ 0~9๊น์ง ์ซ์๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
-
013์ 0, 1, 3 ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์๋ค๋ ์๋ฏธ์ ๋๋ค.
๐ฏ ์ด๋ป๊ฒ ํ์๋
import java.util.Arrays; import java.util.HashSet; class Solution { public int solution(String numbers) { int answer = 0; char[] digits = numbers.toCharArray(); HashSet<Integer> possibleNums = new HashSet<>(); for(int r = 1; r <= digits.length; r++) { permutate(possibleNums, digits, 0, digits.length, r); } for(int possibleNum : possibleNums) { if(isPrime(possibleNum)) answer++; } return answer; } public boolean isPrime(int num) { if(num == 1) return false; if(num == 2) return true; if(num % 2 == 0) return false; int rootNum = (int)Math.sqrt((double)num); for(int i = 3; i <= rootNum; i+= 2) { if(num % i == 0) return false; } return true; } public void permutate(HashSet<Integer> comb, char[] arr, int depth, int n, int r) { if (depth == r) { StringBuilder sbd = new StringBuilder(); for(int i = 0; i < r; i++) sbd.append(arr[i]); comb.add(Integer.parseInt(sbd.toString())); return; } for(int i = depth; i < n; i++) { swap(arr, depth, i); permutate(comb, arr, depth + 1, n, r); swap(arr, depth, i); } } public void swap(char[] arr, int depth, int i) { char temp = arr[depth]; arr[depth] = arr[i]; arr[i] = temp; } }
๐ง ์ ์ ๋ ๊ฒ ํ์๋
์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋จํ๋ค.
๋จผ์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋ ๋ฌธ์์ด numbers์ ๊ธธ์ด๊ฐ n์ด๋ผ๋ฉด charํ ๋ฐฐ์ด๋ก ๋ง๋ ๋ค.
๊ทธ๋ฆฌ๊ณ n๊ฐ์ ๋ฌธ์์์ 1๊ฐ๋ถํฐ n๊ฐ๊น์ง ๊ณ ๋ฅด๋ ์์ด๋ค์ ๋ง๋ค๊ณ ์์ด์ ๊ฒฐ๊ณผ๋ค์ HashSet์ ์ ์ฅํด์ ์ค๋ณต์ด ์๋๋ก ํ๋ค.
๊ทธ ๋ค์ HashSet์ ์ ์ฅ๋ ์ซ์๋ค์ด ์์์ธ์ง ํ๋ณํ๊ณ ์์์ด๋ฉด answer์ 1 ์ฆ๊ฐํ๋ค.
๐ ๋ฌด์์ ๋ฐฐ์ ๋
permutateํ๋ ํจ์๋ ์ ๋ฒ์ ์นด์นด์ค '์์ ์ต๋ํ' ๋ฌธ์ ๋ฅผ ํ์์ ๋ ์ฌ์ฉํ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ ์์ฑํ๋ค.
๊ทธ๋ฆฌ๊ณ ์์์ธ์ง๋ฅผ ํ๋ณํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํด์ ์์ฑํ๋ค.
https://boycoding.tistory.com/225
[ํ๋ก๊ทธ๋๋จธ์ค] ์์์ ํฉ, ์์ ํ๋ณ ์๊ณ ๋ฆฌ์ฆ
์์์ ํฉ 2๋ถํฐ N๊น์ง์ ๋ชจ๋ ์์์ ํฉ์ ๊ตฌํ์ธ์. N์ด 7์ด๋ผ๋ฉด {2,3,5,7} = 17์ ์ถ๋ ฅ ํ์๋ฉด ๋ฉ๋๋ค. N์ ๋ฒ์๋ 2์ด์ 10,000,000์ดํ ์ ๋๋ค. ํจ์จ์ฑ ํ ์คํธ์ ๋ชจ๋ ์๊ฐ ์ ํ์ 1์ด์ ๋๋ค. Step 1. ๏ฟฝ๏ฟฝ
boycoding.tistory.com
'Algo Rhythm๐บ๐ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
-