티스토리 뷰
🚀접근하기
소수와 팰린드롬 두가지 경우를 모두 만족해야 하는 문제이다.
소수 여부를 구하는 것은 지금까지 많이 해왔던 에라토스테네스의 체를 이용하면 되고,
팰린드롬 여부를 구하는 것을 단순히 reversed로 문자열을 뒤집어주고, int로 감싸주어 다시 정수형을 반환해주는 방법을 생각하였다.
🎉코드
❗️틀렸습니다❗️
import sys
n=1000001
array=[True]*n
for i in range(2, int(n ** 0.5)+1):
if array[i]:
for j in range(i*2, n, i):
array[j] = False
N = int(sys.stdin.readline())
for i in range(N, n):
num=int(''.join(reversed(str(i))))
if array[i] and i == num:
break
else:
continue
print(i)
먼저, 에라토스테네스의 체를 이용하여 소수인 것들을 걸러주었다. i를 2부터 1씩 증가하면서 i의 배수들은 다 False로 값을 주었다. (어떤 수의 배수들은 소수가 될 수 없으므로)
그 후에 이제 입력값 N을 받아 N부터 1000000까지 반복문을 돌면서
num=int(''.join(reversed(str(i)))) 을 써줘서 숫자를 거꾸로 뒤집어 주었고, 그 다음 if문을 써주어 팰린드롬과 소수의 여부를 확인해주었다. 두 조건을 모두 만족해야지만 그 수가 원하는 값이 되어 break로 빠져나오게 되는 것이다. 그렇지 않을 경우엔 조건을 만족할 때까지 계속해서 반복문을 돌려준다.
근데...! 이렇게 코드를 제출했더니 ❗️틀렸습니다❗️가 떴다..
그 이유는
1) i=1인 경우와 , 2) i=1000000인 경우를 조건에 넣어주지 않았기 때문이다.
❗️맞았습니다❗️
import sys
n=1000001
array=[True]*n
for i in range(2, int(n ** 0.5)+1):
if array[i]:
for j in range(i*2, n, i):
array[j] = False
N = int(sys.stdin.readline())
for i in range(N, n):
num=int(''.join(reversed(str(i))))
if i == 1:
continue
if i == 1000000:
i = 1003001
break
if array[i] and i == num:
break
else:
continue
print(i)
따라서 1) 경우엔 continue를 사용하여 계속해서 반복문을 돌려주게 하였고, 2)인 경우엔 1000000 크거나 같은 수 중에 소수이면서 팰린드롬인 수인 1003001을 출력해주도록 하였다.
💪다짐
다시 한 번 더 에라토스테네스의 체를 복습할 수 있었던 좋은 기회였던 것 같고, 모든 경우의 수(ex. 이번 문제처럼 i = 1인 경우와 i = 1000000인 경우)를 빠뜨리지 않고 조건문을 잘 써야겠다는 다짐을 하게 되었던 문제였다!
'알고리즘' 카테고리의 다른 글
백준 파이썬 5212 지구 온난화 (1) | 2024.02.27 |
---|---|
백준 파이썬 1456 거의 소수 (1) | 2024.02.26 |
백준 파이썬 9465 스티커 (0) | 2024.01.19 |
백준 파이썬 2156번 포도주 시식 (0) | 2024.01.19 |
백준 파이썬 1309번 동물원 (0) | 2024.01.08 |
- Total
- Today
- Yesterday
- SQL
- 인텔리제이
- 커뮤니티
- SQL 레벨업
- 회원탈퇴
- DP
- 스프링 커뮤니티
- 북마크
- 웹MVC
- 스프링 북마크
- 스프링
- 로그아웃
- 자바
- 백준
- 스프링부트
- JPA
- 웹 MVC
- 프론트엔드
- 파이썬
- 비영속
- 백준 파이썬
- 자바 스프링
- 지연로딩
- 로깅
- 다이나믹 프로그래밍
- SQLD
- EnumType.ORDINAL
- 준영속
- 영속
- elasticsearch
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
31 |