티스토리 뷰
https://www.acmicpc.net/problem/2023
2023번: 신기한 소수
수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수
www.acmicpc.net

문제
수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다.
7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수이고, 7도 소수이다. 즉, 왼쪽부터 1자리, 2자리, 3자리, 4자리 수 모두 소수이다! 수빈이는 이런 숫자를 신기한 소수라고 이름 붙였다.
수빈이는 N자리의 숫자 중에서 어떤 수들이 신기한 소수인지 궁금해졌다. N이 주어졌을 때, 수빈이를 위해 N자리 신기한 소수를 모두 찾아보자.
유형 : 백트랙킹 + 소수 판단
접근 방식
- 자릿수에 따른 소수를 모두 먼저 구해놓는것 ? : 메모리 초과
- 에라토스테네스의 체의 단점은 추가적인 메모리 공간이 필요하다는 것이다.
- 1 - 9 까지의 모든 숫자에 대한 백트랙킹 : 메모리 초과
- 생각해본다면 1자리 수로 가능한 것은 2,3,5,7 4자리 뿐이다.
- 2번 째 자리 부터 가능한 것은 1,3,7,9 4개 뿐이다.
- 소수 판단 : 제곱근 까지만 연산하는 방식을 통해 조금이라도 시간을 아끼자 !
전체 코드
import java.io.*;
import java.util.*;
public class Main {
static int t = 0;
static int n = 0;
static int[] prime = {1,3,7,9};
static StringBuilder sb;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
n = Integer.parseInt(st.nextToken());
sb = new StringBuilder();
travel(2,1);
travel(3,1);
travel(5,1);
travel(7,1);
System.out.print(sb);
br.close();
}
static void travel(int cur,int num){
if(num == n){
sb.append(cur+"\n");
return;
}
for(int i=0;i<4;i++){
int tmp = cur * 10 + prime[i];
if(isPrime(tmp)){
travel(tmp,num + 1);
}
}
}
static boolean isPrime(int num){
for(int i=2;i<=Math.sqrt(num);i++){
if(num % i == 0)
return false;
}
return true;
}
}'알고리즘 > 백준' 카테고리의 다른 글
| 백준 1990 (소수인팰린드롬) - java (1) | 2023.10.30 |
|---|---|
| 백준 2436 (공약수) - java (0) | 2023.10.29 |
| 백준 1644 (소수의 연속합) - java (0) | 2023.10.26 |
| 백준 24042 (횡단보도) - java (1) | 2023.10.24 |
| 백준 1025 (제곱수 찾기) - java (0) | 2023.10.23 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백준 #
- 백준 #인구 이동 #16234
- Java
- 자바
- 백준 #1759 #암호 만들기
- 백준 #1987 #알파벳 #자바 #java
- 백준 #치즈 #2638
- 백준 #16973 #직사각형 탈출
- 17394
- 백준 #1584 #게임 #java #자바
- 올해보다
- 백준 #3980 #선발 명단
- 백준 #13549 #숨바꼭질3
- 백준 #2580 #스도쿠
- 백준 #5721 #사탕 줍기 대회 #java #자바
- 백준 #15686 #치킨 배달
- 백준 #1325 #효율적인 해킹
- 자바 #JAVA
- 백준 #12014 #주식 #자바 #java
- 행복합시다.
- 백준 #18405 #경쟁적 전염
- 백준 #28140 #빨강~ 빨강~ 파랑! 파랑! 달콤한 솜사탕! #java #자바
- 백준 #25603 #짱해커 이동식 #java #자바
- 백준 #14863 #서울에서 경산까지 #java #자바
- 백준 #2636 #치즈
- 백준 #17940 #주식 #자바 #java
- 백준 #다리 만들기 #2146
- 백준 #4963 #섬의 개수
- 백준
- 17218
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
글 보관함