본문 바로가기
Programming Test/코테 대비 과정

[알고리즘 공부] 1이 될 때까지

by muns91 2024. 3. 20.
1이 될 때까지

 

유형 : 그리디 알고리즘

출처 : 이것이 취업을 위한 코딩 테스트다. with Python

프로그램 언어 : Python

난이도 : ★

 

규 칙

 어떠한 수 N이 1이 될 때까지의 다음 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다. 단, 두번째 연산은 N이 K로 나누어 떨어질 때만 선택할 수 있다. 

  1. N에서 1을 뺀다.
  2. N을 K로 나눈다.

 

문 제

  • N과 K가 주어질 때, N이 될 때까지 1번 혹은 2번의 과정을 수행해야 하는 최소 횟수를 구하는 프로그램을 작성하시오. 

 

조 건

  • 첫째 줄에 N(2<= N <= 100,000)과 K(2<= K <= 100,000)가 공백으로 구분되며 각각 자연수로 주어진다. 이때 입력으로 주어지는 N은 항상 K보다 크거나 같다.
  • 출력 조건 : 첫째 줄에 N이 1이 될 때까지 1번 혹은 2번의 과정을 수행해야하는 횟수의 최솟값을 출력한다.
입력 예시 
25 5

출력 예시
2

 

# 사용자로부터 N과 K 값을 입력받음. 여기서 N은 변환 대상이 되는 수, K는 나눗셈에 사용될 수입니다.
n, k = map(int, input().split())

# 연산 횟수를 카운트할 변수 초기화
cnt = 0 

# N이 1이 되지 않은 상태에서 계속 반복
while n != 1:
    # 만약 N이 K로 나누어 떨어지지 않는 경우, N에서 1을 빼고 연산 횟수를 1 증가
    if n % k != 0:
        n -= 1
        cnt += 1
    # 만약 N이 K로 나누어 떨어지는 경우, N을 K로 나누고 연산 횟수를 1 증가
    elif n % k == 0:
        n = n / k
        cnt += 1

# 최소 연산 횟수를 출력
print(cnt)

 

 

참 고

2023.12.08 - [IT/관련 정보] - [코딩 테스트] 이것이 취업을 위한 코딩테스트다 with 파이썬

 

[코딩 테스트] 이것이 취업을 위한 코딩테스트다 with 파이썬

코딩 테스트, 어디서부터 그리고 어떻게 준비해야될까? 이제 졸업 혹은 졸업을 앞두신 분들 그리고 개발 관련 취업에 종사하시고 싶은 분들이라면 반드시 놓치지 말아야할 점이 바로 코딩 테스

muns-da2.tistory.com

 

반응형