์ฌ๋ ๋ ์ฒ๋ผ ์ฝํ ๋ฌธ์ ๋ฅผ ๊ณ์ ํ๊ณ ์๋ค.
์๋ฃ๊ตฌ์กฐ๋ ๋ ์ก์์ ํ๋ฒ ์ ๋ฆฌํด์ผ ๋๋๋ฐ ์๊ฐ์ด ์ข ๋์ง ์๋๋ค. ์๊ฐ ๋ฐฐ๋ถ ์ข ์ํด๋ณด์.
์ด์ ์ค๋ ํผ ๊ฒ์ด ์์ ์ฐพ๊ธฐ๋ผ๋ ์์ ํ์ ๋ฌธ์ ์ธ๋ฐ, ์ด๊ฑด ์์๋ผ๋ ๊ฒ์ด ๊ฒฐ๊ตญ 1๊ณผ ์์ ๋ง์ ์ฝ์๋ก ๊ฐ์ง๋ ์๋ฅผ ๋งํ๋ค. ์ด๋ค ๋ธ๋ก๊ทธ์์ ๋ดค๋๋ฐ ๊ฒฐ๊ตญ ๋ฌธ์ ๋ฅผ ๊ฐ์ํํ๋ ๊ฒ ๊ด๊ฑด์ด๋ผ๋๋ฐ ๊ทธ๊ฒ์ ๋ณด๋ ์๋ชฉ์ ์ข ๊ธธ๋ฌ์ผ๊ฒ ๋ค.
์์ ์ฐพ๊ธฐ
์์ : 1๊ณผ ์๊ธฐ ์์ ๋ง์ ์ฝ์๋ก ๊ฐ์ง๋ ์
String ์ซ์ ๊ฐ์ ๋ฐ์ ์์๋ฅผ ์กฐํฉํ๋ ๊ฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค.
import java.util.HashSet;
import java.util.Iterator;
class Solution {
HashSet<Integer> numberSet = new HashSet<>();
/**
* ์์ ํ์ธ ๋ฉ์๋
* @param num ์์ ํ์ธ ๋งค๊ฐ๋ณ์
* @return boolean ๋
ผ๋ฆฌ ๊ฐ ์์ ์ฌ๋ถ
*/
public boolean isPrimeNumber(int num) {
if (num == 1 || num == 0) {
return false;
}
int sqrt = (int) Math.sqrt(num);
/**
* ์๋ผํ ์คํ
๋ค์ค์ ์ฒด
* ๋ฐฐ์ ์ฌ๋ถ ํ๋จ
*/
for (int i = 2; i <= sqrt; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
/**
* ์กฐํฉ ๊ตฌํ๋ ๋ฉ์๋
* ์ฌ๊ท ํจ์ ์ด์ฉ
* @param combination ์กฐํฉ
* @param otherNumbers ๋ค๋ฅธ ์ซ์
*/
public void recursive(String combination, String otherNumbers) {
/**
* ์กฐํฉ ์ถ๊ฐ
*/
if (!combination.equals("")) {
numberSet.add(Integer.parseInt(combination));
}
/**
* ์ซ์๋ฅผ ๋ํด ์๋ก์ด ์กฐํฉ ์ถ๊ฐ
*/
for (int i = 0; i < otherNumbers.length(); i++) {
if (!combination.equals("")) {
numberSet.add(Integer.valueOf(combination));
}
recursive(combination + otherNumbers.charAt(i), otherNumbers.substring(0, i) + otherNumbers.substring(i + 1));
}
}
public int solution(String numbers) {
int primeCount = 0;
/**
* ์
๋ ฅ ๋ฐ์ ๋ชจ๋ ์กฐํฉ ๋ง๋ค๊ธฐ
*/
recursive("", numbers);
Iterator<Integer> iterator = numberSet.iterator();
while (iterator.hasNext()) {
int number = iterator.next();
if (isPrimeNumber(number)) {
primeCount++;
}
}
return primeCount;
}
}
1. ์์๋ฅผ ๊ตฌํ๊ธฐ ์ํด ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ์ด์ฉํ๋ค.
์ ๊ณฑ๊ทผ์ ๊ตฌํด ๊ทธ ๊ฐ์๋ฅผ ๊ตฌํด ์นด์ดํธ๋ฅผ ์ป์ด ๋ฐ๋ณต๋ฌธ์ ํตํด ์์ ํ๋ณ
์ฐธ์กฐ : https://firework-ham.tistory.com/8
[JAVA] ์์ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ : ์๋ผํ ์คํ ๋ค์ค์ ์ฒด
์์ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ ๋ช ํ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด์ ๋๋ค. ๊ณ ๋ ๊ทธ๋ฆฌ์ค์ ์ํ์ ์๋ผํ ์คํ ๋ค์ค๊ฐ ๋ง๋ค์ด ๋ธ ์์๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฝ๋ฉ ์๊ณ ๋ฆฌ์ฆ์์ ์์๋ฅผ ๊ตฌํ ๋๋ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉ
firework-ham.tistory.com
2. ๊ฐ๋ฅํ ๋ชจ๋ ์กฐํฉ์ ๊ตฌํ๋ ๋ฉ์๋
๋ชจ๋ ์กฐํฉ์ Set์ ๋ฃ์๋ค. Set์ ์ค๋ณต์ ํ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ์ด ์ปฌ๋ ์ ์ ์ฌ์ฉํ๋ค.
3. ์กฐํฉ์ ์ป์ด Iterator์ ์ฌ์ฉํ ํ ๋ฐ๋ณต์ ๋๋ ค ์์ ํ๋ณ์ ํ ๋ค ๊ฐ์ ๋ฐํ
๊ฒฐ๋ก
์์ ํ์์ ์๋ฃ๊ตฌ์กฐ ์ค์์ ์ฌ์ด ํธ์ ์ํ์ง๋ง ๋ชจ๋ ์กฐํฉ์ ๊ตฌํ๋ ๋ถ๋ถ์์ ์ด์ง ์ ๋ฅผ ๋จน๊ธด ํ๋ค.
์์ ํ๋ณํด์ฃผ๋ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ํ์คํ๊ฒ ๋ฐฐ์๊ฐ๋ ๊ฒ ๊ฐ๋ค.
์ปฌ๋ ์ ์ค์์ Map๊ณผ List๋ง ์ผ๋๋ฐ Set๋ ์์ฃผ ์ ์ฉํด์ผ๊ฒ ๋ค.
'๐ Algorithm > ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2022.05.24 ใLv.3 ์ ๊ตญ์ฌ์ฌใ (0) | 2022.05.24 |
---|---|
2022.05.18 ใLv.2 Heap ๋ ๋งต๊ฒใ (0) | 2022.05.18 |
2022.05.17 ใLv.2 ํ๋ฆฐํฐใ (0) | 2022.05.17 |
2022.05.16 ใLv.2 ์นดํซใ (0) | 2022.05.16 |
2022.05.09 ใํด์ Lv.2ใ (0) | 2022.05.09 |