- 문제 분석 요약
입력으로 양의 정수 A와 K가 주어지면, 아래 연산을 이용하여 A를 K로 변경하려고 한다. 정수 A를 변경할 때 사용할 수 있는 연산 종류는 다음과 같다.
- 연산 1: 정수 A에 1을 더한다.
- 연산 2: 정수 A에 2를 곱한다.
정수 A를 정수 K로 만들기 위해 필요한 최소 연산 횟수를 출력하자.
- 알고리즘 설계
# k+1만큼 0으로 된 리스트 graph 생성. (k로 가기까지의 최소 연산 수 저장, 방문했던 숫자인지 확인)
# 초기값이 들어간 큐 생성.
# 큐에서 popleft하여 두가지 경우의 수 (1번 연산, 2번 연산)가 k를 넘지 않고 방문하지 않았다면 큐에 append.
# popleft했을 때 k와 숫자가 같다면 break로 반복문 종료.
- 코드
- 느낀 점
최소 연산 수를 구하는 문제로 bfs가 더 적합.
리스트를 방문확인과 최소연산 수 카운트로 씀.
for문으로 2가지 연산 경우의 수를 한번에 적용
'코딩테스트 오답노트' 카테고리의 다른 글
알고리즘 수업 - 퀵 정렬2 (0) | 2025.03.30 |
---|---|
알고리즘 수업 - 병합 정렬 1 (0) | 2025.03.25 |
DFS/BFS 바이러스 (0) | 2025.02.20 |
DFS/BFS 여행경로 (0) | 2025.02.18 |
DFS/BFS 단어 변환 (0) | 2025.02.16 |