https://school.programmers.co.kr/learn/courses/30/lessons/42839
๋ฌธ์ ์ค๋ช
ํ์๋ฆฌ ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์์ต๋๋ค. ํฉ์ด์ง ์ข ์ด ์กฐ๊ฐ์ ๋ถ์ฌ ์์๋ฅผ ๋ช ๊ฐ ๋ง๋ค ์ ์๋์ง ์์๋ด๋ ค ํฉ๋๋ค.
๊ฐ ์ข ์ด ์กฐ๊ฐ์ ์ ํ ์ซ์๊ฐ ์ ํ ๋ฌธ์์ด numbers๊ฐ ์ฃผ์ด์ก์ ๋, ์ข ์ด ์กฐ๊ฐ์ผ๋ก ๋ง๋ค ์ ์๋ ์์๊ฐ ๋ช ๊ฐ์ธ์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- numbers๋ ๊ธธ์ด 1 ์ด์ 7 ์ดํ์ธ ๋ฌธ์์ด์ ๋๋ค.
- numbers๋ 0~9๊น์ง ์ซ์๋ง์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- "013"์ 0, 1, 3 ์ซ์๊ฐ ์ ํ ์ข ์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์๋ค๋ ์๋ฏธ์ ๋๋ค.
1. set ์ ์ค๋ณต์ ๊ฑธ๋ฌ์ฃผ๋ ์งํฉ์ด๋ค!
2. ์์๋ฅผ ํ์ธํ ๋์๋ ์ซ์๋ฅผ ๋๋๋ ๋ฐ๋ณต๋ฌธ์ ๋ฒ์๋ฅผ 2 ์ด์ sqrt(n) ์ดํ๋ก ์ค์ ํ๋ค
3. algorithm ํค๋ํ์ผ์ next_permutation ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด, ๋ชจ๋ ์์ด์ ํ๋์ฉ ๊ตฌํ ์ ์๋ค.
-> ๋์ , ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌํ๊ธฐ ์ํด์๋ ๋จผ์ ์ ๋ ฌ์ด ํ์ํจ
4.. while()~ ๋์ do while ๋ฌธ์ ์ฌ์ฉํ๋ ์ด์ ๋?
-> next_permutation์ ์ด์ฉํ์ฌ ๋ค์ ์์ด๋ก ๋์ด๊ฐ๊ธฐ ์ ์, ์ฒ์ ์ํ์ ์์ด๋ก๋ do ๋ด๋ถ์ ๋ด์ฉ์ ์คํ์์ผ์ผ ํ๊ธฐ ๋๋ฌธ.
๋์ ํ์ด
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <cmath>
using namespace std;
bool isPrime(int n){
if(n<2) return false;
for(int i=2; i<=sqrt(n); ++i){ // ์์ ํ์ธ
if(n%i == 0) return false;
}
return true;
}
int solution(string numbers) {
int answer = 0;
int n=0;
set<int> s;
sort(numbers.begin(), numbers.end());
do{
for(int i=0; i<numbers.length(); ++i){
n = stoi(numbers.substr(0,i+1));
if(isPrime(n)) s.insert(n);
}
} while(next_permutation(numbers.begin(), numbers.end()));
answer = s.size();
return answer;
}
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/PGS] Lv.2 : H-index (์ ๋ ฌ) (0) | 2023.03.03 |
---|---|
[C++/PGS] Lv.2 : ์นดํซ (์์ ํ์) (0) | 2023.03.03 |
[C++/PGS] Lv.2 : ๊ตฌ๋ช ๋ณดํธ (GREEDY) (0) | 2023.03.03 |
[C++/PGS] Lv.2 : ํฐ ์ ๋ง๋ค๊ธฐ (GREEDY) (0) | 2023.03.02 |
[C++/PGS] Lv.2 : ํ๋ฆฐํฐ (Queue) (0) | 2023.03.02 |