[백준] 9625 - BABBA 🆎 (Python) / 실버 5 / DP

반응형

BAEKJOON Logo

 

Contents

     


    1.  문제🔥

    링크: https://www.acmicpc.net/problem/9625

    문제

    문제를 요약하자면, 화면에 A가 표시되어 있고, 버튼이 하나만 있는 기계가 있습니다. 버튼을 누르면 A는 B로 변하고, B는 BA로 변하게 됩니다. K 번 버튼을 눌렀을 때, A와 B의 개수를 구해야 합니다.

     

    1) 예제 입출력❄️

    예제 입 출력

    버튼을 한 번 누르면, 화면에 표시되었던 A가 B로 바뀌고, 출력은 A가 0개, B가 1개로 0 1이 됩니다.

     

    2. 핵심 논리☢️

    한 번 누르면 A:0 B:1입니다. 그다음은 A:1 B:1 -> A:1 B:2 -> A:2 B:3입니다. A와 B가 피보나치의 규칙을 따르는 것을 찾는게 핵심입니다.

     

    3. 풀이 코드

    1) 코드

    K=int(input())
    a,b=0,1
    for i in range(1,K):
        a,b = b,a+b
    print(a,b)

    버튼을 누른 횟수 K를 입력 받습니다. 제한 사항에 따라 K는 1이상 45 이하입니다. 버튼을 한 번 눌렀을 때 A가 0개, B가 1개입니다. 이를 a, b 변수에 초기화해줍니다. 그리고 for 문은 버튼을 2번 이상 누른 경우부터 돌 수 있도록, range(1,K)로 시작합니다. for문 내부에서는 피보나치 수열이 진행될 수 있도록 a에는 b를, b에는 a+b를 동시에 넣어줍니다. 최종으로 a,b를 출력합니다.

     

    2) 주석달린 코드

    K=int(input()) # 버튼을 누른 횟수 K
    a,b=0,1 # 버튼을 1번 누른 경우로 초기화
    for i in range(1,K): # 2번 누른것부터 for문 반복
        a,b = b,a+b # 피보나치 수열 진행
    print(a,b) # A개수, B개수 출력

     

     

    읽어주셔서 감사합니다.

    다음에 더욱 유익한 글로 찾아오겠습니다.

     

    * 관련 풀이 코드는 아래 깃허브 링크에 있습니다.

    https://github.com/netsus/BaekJoon/blob/master/jupyter/9625_BABBA.ipynb

     

    GitHub - netsus/BaekJoon: Algorithm Problem solving

    Algorithm Problem solving. Contribute to netsus/BaekJoon development by creating an account on GitHub.

    github.com

     

    Reference)
    1. BAEKJOON Logo: https://www.acmicpc.net/
    반응형

    댓글

    Designed by JB FACTORY