[ 기타 ]/코딩테스트

[백준 / JAVA] (DFS) 2023번 : 신기한 소수

2023. 5. 8. 18:27
목차
  1. 풀이
  2. 1. 예제 해석
  3. 2. 문제 해결 방법
  4. 3. 슈도 코드
  5. 4. 소수 판별 메소드
  6. Code

풀이

1. 예제 해석

7331은 정답중 하나이다.
맨 앞의 수 7부터 시작한다.
7도 소수고, 73도 소수고, 733도 소수고, 7331도 소수이다.
이런 소수를 찾아내는 것이 목표이다.

2. 문제 해결 방법

  • 우선 한자리 수가 소수여야 한다.
    따라서 첫 시작은 2, 3, 5, 7 로 좁혀진다.
  • 두자리수부터 일의자리수는 홀수여야 한다.
    따라서 두자리수 이후는 홀수만 판별하면 된다.

3. 슈도 코드

int n : 목표 자릿수
int digit : DFS 내에서 현재 자릿수
StringBuilder sb

DFS(2,1);
DFS(3,1);
DFS(5,1);
DFS(7,1);
sout(sb)

DFS(num, digit){
if(digit == n ){
    if(소수){
        sb.append
        return;
       }
 }
 for(i = 1,3,5,7,9){
     if(10*num+i = 소수){
        DFS(10*num+i , digit+1);
    }
 }

4. 소수 판별 메소드

소수는 약수가 1과 자기자신만 있는 수이다.
숫자 num에 대하여 for(i=2;i<(int)Math.squt(num);i++) 로 반복하면서 num%i가 0이 아니면 소수이다.

소수 판별은 자주 사용하기 때문에 알아두면 좋다.

static boolean isPrime(int number){
        for(int i=2;i<=(int)Math.sqrt(number);i++){
            if(number%i == 0)return false;
        }
        return true;
    }

 


Code

package DFS.no2023_신기한소수;

import java.util.Scanner;

public class No2023 {
    static int n;
    static StringBuilder sb = new StringBuilder();
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        //한자리 수가 소수인 경우는 2,3,5,7 가 있다.
        DFS(2,1);
        DFS(3,1);
        DFS(5,1);
        DFS(7,1);

        System.out.println(sb);
    }
    static void DFS(int num, int digit){
        if(digit == n){
            if(isPrime(num)){
                sb.append(num).append("\n");
                return;
            }
        }
        for(int i=1;i<=9;i+=2){
            if(isPrime(num*10+i)){
                DFS(num*10+i,digit+1);
            }
        }
    }
    static boolean isPrime(int number){
        for(int i=2;i<=(int)Math.sqrt(number);i++){
            if(number%i == 0)return false;
        }
        return true;
    }
}
반응형

'[ 기타 ] > 코딩테스트' 카테고리의 다른 글

[백준/JAVA] 1966번 : 프린터 큐  (0) 2023.05.19
[백준/JAVA] 7568번 덩치 (브루트포스, 구현)  (0) 2023.05.18
[백준 / JAVA] 1260번 : DFS와 BFS  (0) 2023.05.08
[백준 / JAVA] (greedy) 2839번 : 설탕배달  (0) 2023.05.08
[백준 / JAVA] (DFS) 2606번 : 바이러스  (0) 2023.05.08
  1. 풀이
  2. 1. 예제 해석
  3. 2. 문제 해결 방법
  4. 3. 슈도 코드
  5. 4. 소수 판별 메소드
  6. Code
'[ 기타 ]/코딩테스트' 카테고리의 다른 글
  • [백준/JAVA] 7568번 덩치 (브루트포스, 구현)
  • [백준 / JAVA] 1260번 : DFS와 BFS
  • [백준 / JAVA] (greedy) 2839번 : 설탕배달
  • [백준 / JAVA] (DFS) 2606번 : 바이러스
HSRyuuu
HSRyuuu
Web Backend Developer happyhsryu
HSRyuuu
HS_dev_log
HSRyuuu
전체
오늘
어제
  • 전체 글 보기 (233)
    • Java (25)
    • Spring (27)
    • JPA & QueryDSL (13)
    • Database (17)
    • 자료구조 & 알고리즘 (30)
    • DevOps (10)
    • [ Computer Science ] (47)
      • Web & Network (14)
      • 프로그래밍 이론 (11)
      • 운영체제 (3)
      • 데이터베이스 이론 (5)
      • Linux 리눅스 (7)
    • [ Frontend ] (17)
      • Vue.js & Nuxt.js (9)
      • JSP_Thymeleaf (7)
    • [ 기타 ] (47)
      • 오픈소스 라이브러리 (5)
      • 코딩테스트 (13)
      • Trouble Shooting (7)
      • Tech Interview (6)
      • Book Review (9)
      • 끄적끄적... (5)
      • 개인 프로젝트 (2)

블로그 메뉴

  • 홈
  • 태그
  • github

공지사항

  • GitHub
  • 공부한 내용을 정리하고 기록하는 블로그 입니다.

인기 글

태그

  • Java
  • MySQL
  • Redis
  • 백준
  • TechInterview
  • 클린코드
  • 자료구조
  • SpringBoot
  • 기술면접
  • JPA
  • mybatis
  • 리눅스
  • 트랜잭션
  • Nuxt3
  • 백엔드기술면접
  • 개발자
  • HTTP
  • Database
  • SQL
  • Redisson
  • 백엔드공부
  • 백엔드
  • springsecurity
  • 제로베이스
  • Spring
  • vue3
  • cleancode
  • 백엔드스쿨
  • web
  • Linux

최근 댓글

최근 글

hELLO · Designed By 정상우.
HSRyuuu
[백준 / JAVA] (DFS) 2023번 : 신기한 소수
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.