https://www.acmicpc.net/problem/1963
알고리즘을 너무 안 풀었더니 너무 오랜시간동안 붙잡고 풀었다.
소수판별하는 방법은 은근히 자주 보이는 것 같다. 제대로 숙지할 필요가 있어보인다.
애먹은 부분
문자열에서 특정 인덱스 변경하는 것은 C가 오히려 쉬운 것 같다.
list( ) / join( ) 을 사용하는 방법과 slicing을 하는 두가지 방법이 있다.
https://pythonexamples.org/python-string-replace-character-at-specific-position/
from collections import deque
prime = [True for _ in range(10000)]
for i in range(2,100):
if prime[i]==True:
n = i
multiple = 2
while n*multiple < 10000:
prime[n*multiple] = False
multiple += 1
N = int(input())
def solution(src, dst):
visited = [True for _ in range(10000)]
que = deque()
cnt=0
que.append([src, cnt])
visited[int(src)]=False
while que:
number,cnt=que.popleft()
if number == dst:
print(cnt)
return
cnt+=1
for i in range(4):
for j in range(10):
number_new = list(number)
number_new[i]=str(j)
number_new="".join(number_new)
number_new=int(number_new)
if prime[number_new] and number_new>1000 and visited[number_new]:
visited[number_new]=False
que.append([str(number_new),cnt])
print('Impossible')
return
for i in range(N):
src, dst = map(str, input().split())
solution(src, dst)
'자료구조 알고리즘 > 알고리즘' 카테고리의 다른 글
이진 탐색 트리 (BST) / 레드 블랙 트리 (RED BLACK TREE) (1) 개념요약 (0) | 2021.09.07 |
---|---|
백준 외판원 순회 파이썬 ( 동적 계획법 [DP], 비트마스크 ) (0) | 2021.08.31 |
1946 신입사원 파이썬 (0) | 2021.08.28 |
1700 멀티탭 스케줄링 파이썬 풀이 (2) | 2021.08.28 |
백준 3055 탈출 파이썬 BFS 풀이 (0) | 2021.08.25 |