λ€μ΄κ°λ©°
μ λ² ν¬μ€ν μμλ μ΄μ μνλ₯Ό κΈ°μ΅ν΄μΌνλ λ¬Έμ κ° λνμ μΈ μ€ν νμ©λ²μ΄λΌκ³ μκ°νμ΅λλ€.(μ΄μ ν¬μ€ν ) μ€νκ³Ό μ¬κ·λ μ΄λ¬ν μ μμ λΉμ·ν μ μ΄ λ§μ΅λλ€. κΉκ² νκ³ λ€μ΄κ°λ€κ° λ€μ λμ€λ ννλ λμΌνμ£ . μ€λμ μ΄λ¬ν μ νμ λ¬Έμ λ₯Ό μ νμ λ, μ¬κ·λ₯Ό μ νν΄μΌ νλμ§ μ€νμ μ νν΄μΌνλμ§ μμλ΄ μλ€.
κΈ°μ€ | μ€ν κΈ°λ° DSF | μ¬κ· DFS |
μ½λ 볡μ‘λ | μ€ν μ μΈ, μ(pair) κ΄λ¦¬, λ°λ³΅λ¬Έ μ¬μ© | ν¨μ νΈμΆλ‘ ꡬ쑰 λ¨μ |
κ°λ μ± | νλ¦μ λ°λΌκ°κΈ° μ΄λ €μ | λ Όλ¦¬μ μΌλ‘ λ¨κ³μ μ΄λ©° μμ°μ€λ¬μ |
μ±λ₯ | λΉμ·ν¨ (Nμ΄ μμ, μ΅λ 8μ리) | κ±°μ μ°¨μ΄ μμ |
μ λ ¬ | νμ²λ¦¬ νμ (λ²‘ν° + μ λ ¬) | νμ μμ μ‘°μ κ°λ₯ (forλ¬Έ μ€λ¦μ°¨μμΌλ‘) |
μ λ λλ²κΉ μ λν΄ν¨κ³Ό μ§κ΄μ μ΄μ§ μμ μ½λ νλ¦ λλ¬Έμ μ¬κ·λ₯Ό μΈλ©΄νκ³€ νμ΅λλ€. νμ§λ§ λλΆλΆμ DFS λ¬Έμ λ μ¬κ·λ₯Ό μ¬μ©νλ κ²μ΄ νΈνλ€κ³ ν©λλ€. λ€λ§ μ¬κ·μ κΉμ΄κ° 1λ§ λ Έλ μ΄μμΌλ‘ κΉμ΄μ‘μ λλ ν¨μ μ€ν μ€λ²νλ‘κ° λμ¬ μ μμΌλ―λ‘ μ€νμ μ¬μ©ν΄μΌν©λλ€. λν μ΄μ μνμ ꡬ쑰μ μ μ₯ λ°©μμ΄ λ¨μνμ§ μμ κ²½μ°μλ λ°μ΄ν°λ₯Ό λ°λ‘ λ§λ€μ΄μ μ€νμ νμ©ν μ μμ΅λλ€. λ€λ§ μκ³ λ¦¬μ¦ μ½λ©ν μ€νΈμ κ²½μ° μ΄λ° κ²½μ°λ κ±°μ μκΈ° λλ¬Έμ μ¬κ·λ₯Ό μ¬μ©νλ κ²μ΄ νΈνλ©°, μ€λ¬΄κ΄μ μμλ μꡬμ¬νμ΄ λ³΅μ‘νκΈ° λλ¬Έμ μ€νμ νμ©νλ κ²μ΄ μ’μ κ² κ°μ΅λλ€.
λ¬Έμ
μ리μλ₯Ό μ€μ¬κ°λ©΄μ μ»μ μ«μκ° λͺ¨λ μμμΈ μλ₯Ό μ°Ύλ λ¬Έμ μ λλ€. Nμ μ΅λκ°μ΄ 8μ΄λΌμ μλ€κ³ λλμ μμ§λ§ μ²λ§ λ¨μμ λλ€. λ¬Έμ μ κ·Ό λ°©μμ κ°μ₯ ν° μ리μλΆν° μμμΈμ§ νμΈνκ³ κ·Έ λ€μ μ리μλ₯Ό νμν΄λκ°μΌν©λλ€. μ΄μ μλ¦Ώμκ° μμμΈμ§λ₯Ό κΈ°μ΅ν΄μΌνκΈ° λλ¬Έμ DFS λ°©μμΌλ‘ νκ² μ΅λλ€.
νμ΄
νμ΄λ λ κ°μ§ λ°©λ²μΌλ‘ νμ΄λ΄€μ΅λλ€. 첫 λ²μ§Έλ μ€ν, λλ²μ§Έλ μ¬κ·μ λλ€.
νμ΄1(μ€ν)
νμ΄ κ³Όμ
- μμμΈμ§ νλ³νλ ν¨μ μμ±(μ΄κ±΄ ν¨ν΄ν λμ΄ μκΈ° λλ¬Έμ μ¬κΈ°μ λ€λ£¨μ§ μκ² μ΅λλ€, μ λ μ κ³±κ·Όμ νμ©ν λ°©μ μ±ν)
- κ°μ₯ ν° μ리 μ λ¨Όμ μ€νμ λ£κΈ°(2, 3, 5, 7)(νμ리μ μμ)
- νλμ© λΉΌμ λ€μ μ(next)κ° μμμ΄λ©΄, λ€μ μ€νμ λ£κΈ°(5μΈ κ²½μ° λ€μμλ 51, 53, 55... -> μ§μλ μμκ° μλ)
- μ리μκ° μ λ ₯λ°μ μ리μμ κ°μΌλ©΄ result 리μ€νΈμ λ£κΈ°
- μ€νμ΄ λͺ¨λ λΉμ΄μμ λκΉμ§ μ λ΄μ© λ°λ³΅
- result 리μ€νΈ μ λ ¬ λ° μΆλ ₯
// c++ 17
#pragma once
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <math.h>
#include <algorithm>
using namespace std;
bool isPrime(int n)
{
if (n <= 1) {
return false;
}
for (int i = 2; i <= sqrt(n); i++) {
if ((n%i) == 0) {
return false;
}
}
return true;
}
int main()
{
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int N;
cin >> N;
stack<int> s;
vector<int> inputs{ 2, 3, 5, 7 };
for (const auto i : inputs)
s.push(i);
vector<int> result;
while (!s.empty())
{
const auto target = s.top();
s.pop();
if (to_string(target).size() == N)
{
result.push_back(target);
continue;
}
for (int i = 1; i <= 9; i += 2)
{
const int num = target * 10 + i;
if (isPrime(num))
s.push(num);
}
}
sort(result.begin(), result.end());
for (const auto& r : result)
printf("%d\n", r);
}
2,3,5,7 μμλλ‘ μ€νμ λ£μκΈ° λλ¬Έμ 7393μ΄ κ°μ₯ λ¨Όμ μ€νμ λ€μ΄κ°λλ€. μμΈν λ€μ¬λ€ λ³΄κ² μ΅λλ€. κ°μ₯λ¨Όμ 7μ΄ λμ€κ³ , 71μ μμκ° μλ, λ€μ 73μ μμμ΄κΈ° λλ¬Έμ 73 μ€ν μ½μ ν©λλ€. λ€μ 73 κΊΌλ΄μ κ·Έ λ€μ μ리μ λΉκ΅νλ©΄ 733, 739κ° μ°¨λ‘λ‘ μ€νμ μ½μ λ©λλ€. λ€μ 739λ₯Ό κΊΌλ΄κ³ λ§μ§λ§ μ리μλ₯Ό λΉκ΅νλ©΄ 7393μ΄ νκ²μ΄ λμ΄ resultμ λ€μ΄κ°λλ€.
νμ΄2(DFS)
νμ΄ κ³Όμ
- numκ³Ό digitμ μΈμλ‘ λ°λ DFS ν¨μλ₯Ό λ§λλ κ²μ΄ ν€ν¬μΈνΈ
- μ¬κ·ν¨μλ νμ λΉ μ Έλκ° κ΅¬λ© λ¨Όμ λ§λμλ€.
- μ리μ(digit) μ‘°κ±΄μ΄ λ§μ‘±νκ³ , μμμ΄λ©΄ μΆλ ₯ ν ν¨μ μ’ λ£
- nextκ° μμμ΄λ©΄ μ¬κ·νΈμΆ(digitμ΄ λμ΄λ¬κΈ° λλ¬Έμ digit+1λ‘ νΈμΆ)
- mainμμλ 첫λ²μ§Έ μ리μ νκ²(2,3,5,7) λ§νΌ DSFν¨μ νΈμΆ
// C++ 17
#include <iostream>
#include <vector>
using namespace std;
int N;
bool isPrime(int num) {
if (n <= 1)
return false;
for (int i = 2; i <= sqrt(n); i++) {
if ((n%i) == 0)
return false;
}
return true;
}
void DFS(int num, int digit)
{
if (digit == N)
{
if (isPrime(num))
{
cout << num << endl;
return;
}
}
for (int i = 1; i < 10; i += 2)
{
int next = num * 10 + i;
if (isPrime(next))
DFS(next, digit + 1);
}
}
int main()
{
cin >> N;
DFS(2, 1);
DFS(3, 1);
DFS(5, 1);
DFS(7, 1);
}
DFSλ‘ νΌ μ½λκ° ν¨μ¬ κ°κ²°ν©λλ€.
μ 리
μ€λ λ¬Έμ λ μ νμ μΈ μ¬κ· DSF λ§μΆ€μ΄μμ΅λλ€. νμ§λ§ μ λ μ²μλΆν° μ€νμ μ°λ €κ³ κ³ μ§νμ΅λλ€. μ€νμ΄λ μ¬κ·λ μ νλ©΄ λμ§λ§ λ μμ°μ€λ¬μ΄ λ°©λ²μ μ±ννλ κ²μ΄ μμ°μ±μ λμμ΄ λ©λλ€. λ¬Έμ λ₯Ό μ²μ μ νμ λ μμ°μ€λ½κ³ κ°κ²°νκ² ν μ μλ λ°©λ²μ μ°ΎμΌλ €κ³ κΎΈμ€ν λ Έλ ₯ν΄λ΄ μλ€.
'μκ³ λ¦¬μ¦' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ€ν, ν] λ°±νΈλνΉ(μ΄μ μν κΈ°μ΅)μ μ€νμ νμ©νμΈμ (0) | 2025.05.11 |
---|---|
[μ°μ μμ ν] μ΅μκ° or μ΅λκ° μ°ΎκΈ° μκ³ λ¦¬μ¦(feat. deque) (0) | 2025.04.13 |
[κΈ°λ³Έ] ν¬ ν¬μΈν° (0) | 2025.03.25 |
[κΈ°λ³Έ] ꡬκ°ν© μμ© (0) | 2025.03.13 |
[κΈ°λ³Έ] μ€ν μλ£κ΅¬μ‘° νμ© (0) | 2025.03.10 |
λκΈ