[BOJ/python] 2023번 신기한 소수

2022. 2. 27. 20:44· Koala - 5기/기초 알고리즘 스터디

https://www.acmicpc.net/problem/2023

 

2023번: 신기한 소수

수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수

www.acmicpc.net

 

문제 해석

 

왼쪽 부터 1자리, 2자리, 3자리, 4자리 순으로 n이 주어지면 n자리 까지의 모든 수가 소수인 수를 구하는 문제이다.


코드

def go(t):
	# 소수 체크 #
	flag = True
	i = 2
	while i * i <= t: 
		if t % i == 0:
			flag = False
			break
		i += 1

	if flag: # 소수가 참일 때 현재 소수 * 10 + i를 하여 다시 체크
		for i in range(1,10):
			go(t*10 + i)
	else: return # 거짓일 때 return

	# -------------------- #

	# m자리가 될 때 출력
	if len(str(t)) == m:
		print(t)
		return
		
m = int(input())
for i in range(2,10):
	go(i)

문제 풀이

 

백트래킹을 사용하여 푸는 방법을 생각해보았다.

첫째 자리부터 2부터 9까지 재귀함수에 대입하여 소수 판별을 한 후 다음 자리수를 하나씩 대입하여 소수 판별을 하면 된다.

 

먼저 소수 판별하는 방법은 2 ~ n-1 까지의 수를 나누어 보았을때 나머지가 없어야 한다.

하지만 이 방법으로는 시간복잡도가 O(N) 이 되기때문에, 훨씬 시간이 적게 드는 방법을 사용했다.

2 ~ √(n-1) 까지만 나누어보아도 소수 판별이 가능하다.

 

재귀함수 go(t)를 해석하면

먼저 소수를 판별한다. 루트를 사용하면 표기상 불편하기 때문에 i*i 을 사용했다.

소수가 맞다면 flag = True값이 되고, 다음 for문을 통해  t * 10 + 1 ~ 9 까지 들어가게 된다.

#( 0을 넣으면 2로 나누어지기 때문에 1부터 넣었다. )

이후 문제에서 원하는 m자리 까지 도달하면 출력한다.

 

m자리를 받고 반복문을 통해 2 부터 9까지 수를 넣었다.

#( 0과 1은 재귀함수가 아니기 때문에 2부터 넣었다. )

 

원문

https://ddingmin00.tistory.com/22

 

[BOJ/python] 2023번 신기한 소수

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

ddingmin00.tistory.com

 

저작자표시 (새창열림)

'Koala - 5기 > 기초 알고리즘 스터디' 카테고리의 다른 글

[백준/python] 17608 막대기  (0) 2022.02.28
[백준/c++] 3029번 경고  (0) 2022.02.28
[BOJ / PYTHON ] 15649 N과M  (0) 2022.02.26
[백준/python] 1032번 명령 프롬포트  (0) 2022.02.21
<6주차> [BOJ / C++] 1932번 - 정수 삼각형  (0) 2022.02.20
'Koala - 5기/기초 알고리즘 스터디' 카테고리의 다른 글
  • [백준/python] 17608 막대기
  • [백준/c++] 3029번 경고
  • [BOJ / PYTHON ] 15649 N과M
  • [백준/python] 1032번 명령 프롬포트
KauKoala
KauKoala
항공대 알고리즘 동아리 Koala 🥰
Koala항공대 알고리즘 동아리 Koala 🥰
KauKoala
Koala
KauKoala
전체
오늘
어제
  • 분류 전체보기 (1884)
    • 공지 게시판 (10)
    • 정보 게시판 (8)
    • Codeforce (15)
    • acm-icpc (6)
    • Koala - 1기 (16)
    • Koala - 2기 (111)
      • Programming Contest (1)
      • A반 (20)
      • B반 (39)
      • C반 (22)
      • 기초 강의 (18)
    • Koala - 3기 (10)
      • 기초 스터디 (7)
    • Koala - 4기 (67)
    • Koala - 5기 (144)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (68)
    • Koala - 6기 (102)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (25)
      • 모의 테스트 스터디 (1)
    • Koala - 7기 (167)
      • 기초 알고리즘 스터디 (97)
      • 코딩테스트 준비 스터디 (68)
      • 모의 테스트 스터디 (1)
    • Koala - 8기 (44)
      • 기초 알고리즘 스터디 (32)
      • 코딩테스트 준비 스터디 (10)
      • 코드포스 버츄얼 스터디 (0)
      • 프로그래머스 LV2 스터디 (0)
    • Koala - 9기 (205)
      • 기초 알고리즘 스터디 (138)
      • 코딩테스트 준비 스터디 (64)
      • 모의테스트 준비 스터디 (1)
    • Koala - 10기 (117)
      • 기초 알고리즘 스터디 (30)
      • 코딩테스트 준비 스터디 (86)
      • 모의테스트 준비 스터디 (1)
    • Koala - 11기 (151)
      • 기초 알고리즘 스터디 (46)
      • 코딩테스트 준비 스터디 (104)
      • 모의테스트 준비 스터디 (1)
    • Koala - 12기 (86)
      • 기초 알고리즘 스터디 (31)
      • 코딩테스트 준비 스터디 (55)
    • Koala - 13기 (119)
      • 기초 알고리즘 스터디 (52)
      • 코딩테스트 준비 스터디 (67)
    • Koala - 14기 (116)
      • 기초 알고리즘 스터디 (39)
      • 코딩테스트 준비 스터디 (77)
    • Koala - 15기 (138)
      • 기초 알고리즘 스터디 (73)
      • 코딩테스트 준비 스터디 (65)
    • Koala - 16기 (47)
      • 코딩테스트 기초 스터디 (16)
      • 코딩테스트 심화 스터디 (31)
    • Koala - 17기 (62)
      • 코딩테스트 기초 스터디 (15)
      • 코딩테스트 심화 스터디 (47)
    • Koala - 18기 (31)
      • 코딩테스트 기초 스터디 (11)
      • 코딩테스트 심화 스터디 (20)
    • Koala - 19기 (38)
      • 코딩테스트 기초 스터디 (7)
      • 코딩테스트 심화 스터디 (31)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 🐨항공대 알고리즘 학회 Koala 3기 모집
  • 🐨항공대 알고리즘 학회 Koala 2기 모집
  • 소모임 소개

인기 글

태그

  • 백준
  • BOJ
  • 백트래킹
  • dfs
  • C++
  • 파이썬
  • BFS
  • dp

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
KauKoala
[BOJ/python] 2023번 신기한 소수
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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