ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1이 될 때 까지
    코테 대비 python/백준 2022. 2. 18. 16:35

    출처: 이코테

     

    # 어떤수 N이 1이 될때 까지 두과정중 한가지를 반복적으로 시행 2번은 N이 K로 나누어 떨어질 때만 가능
    N,K= map(int,input().split())

    #사실상 1빼는 것보다 나누는게 무조건 이득인 상황 따라서 그리디
    #카운트 초기화
    count =0
    #1일 때까지 계속 해야되므로 while문 사용
    while N!=1:
        if N%K==0:
            N= N//K
            count+=1
        else:
            N-=1
            count+=1



    print(count)
     
     
    ===================================================
     
    #답지 풀이 1
    n, k =map(int, input().split())
    result = 0

    while n >=K:
        while n%k !=0:
            n-=1
            result +=1

        n//=K
        result +=1


    while n>1:
        n-=1
        result +=1

    print(result)


    #답지 풀이 2
    n,k = map(int,input().split())
    result = 0

    while True:
        target = (n//k)*k
        result +=(n-target)
        n = target

        if n <k:
            break
        result +=(n-target)
        n=target
        if n<k:
            break
        result +=1
        n//=k

    result +=(n-1)

    print(result)


     
     
    답지풀이도 공부하는 것이 도움이 되는 것 같다.
    물론 내 풀이가 더 깔끔할 때도 있지만
    모든 상황에 적용되지는 않으므로
    답지처럼 case by case로 나누는 연습도 해야겠다.
     
    얻은것
    1. 점점 그리디문제에 익숙해지는 것 같다
    2. 사고과정 => 무조건 나누는 것이 이득이다라는 것을 파악하는것

    '코테 대비 python > 백준' 카테고리의 다른 글

    백준_1026  (0) 2022.02.19
    백준_1931  (1) 2022.02.19
    숫자 카드 게임  (0) 2022.02.18
    큰 수의 법칙  (0) 2022.02.18
    거스름 돈  (0) 2022.02.18
Designed by Tistory.