[백준] 19956. Бактерии

newbieski·2022년 7월 7일
0

백준

목록 보기
152/210

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

문제요약

  • 바이러스를 배양중임
  • 제곱하거나, p(소수)로 나눌 수 있음(나누어떨어져야함)
  • 가장 적은 수의 시퀀스로 n->m을 만들어야함

접근법

  • 소인수 개수를 맞춰줘야하는데 증가는 제곱만 가능하고, 감소는 나누기만 가능함을 파악
  • 일단 소인수 분해
  • 1은 예외처리(해도 되고 자연스럽게 구현해도 되고)
  • m에 있는 소인수가 n에 없으면 실패처리
  • 제곱은 소인수의 개수가 적을때만 수행 : 더 많은데 굳이 늘릴 필요는 없다고 봄
  • 나누기는 언제든 수행
  • BFS로 최단거리 파악
    • 방문할 노드가 1 ~ 10^9가 될 것처럼 보이지만
    • 지수는 최대 30개이고, 소인수는 2,3,5,7,11,13,17,19,23 해도 9개 정도 됨
    • 9개정도의 소수로 10^9 아래에서만 유지하는 경우의 수는 많지는 않을 것으로 판단함
  • 최단거리 이동경로를 잘 정리해서 출력
profile
newbieski

0개의 댓글