본문 바로가기
  • 행복은 내게서 오는 것!
프로그래밍/Python

막대의 길이, 색상의 변화 횟수

by ㅍ우주 2023. 4. 6.
# 막대의 길이는 n 이다.
# 막대는 두가지 색상이 교차로 이루어져있다.
# 검, 흰흰, 검검검, 흰흰흰흰, 검검검검검, 흰흰흰흰흰흰, 검검검검검검검,  순으로 생성된다.     홀 : 검, 짝 : 흰
# -> for문 이용. 반복을.. 할건데..
# 마지막 색깔과 막대기 색깔이 몇번 바뀌었는지 출력.

# ex) 막대의 길이 : 30
# 마지막 색 : 흰
# 변경 횟수 : 7
a =  True
i = 1 # i는 반복문의 번째를 표현하는 동시에, 짝/홀을 구분하여 검은색이 출력되냐, 흰색이 출력되냐를 구별하는 역할을 한다.
storage = 0 # storage는 지금까지 사용자가 사용한 막대의 길이를 의미한다. 이는 사용자가 입력한 막대의 길이와 사용한 막대의 길이(storage)를 비교하는 조건을 의미한다.
chg_cnt = 0 #chg_cnt는 색의 변화 횟수를 의미한다.
length = int(input("막대의 길이를 입력하시오 : "))
while a == True:
    if length > storage:
        if i % 2==1: #1
            print("검"*i)
            storage+=i #0+1 = storage . storage = 1
            i+=1
            chg_cnt +=1
        else:
            print("흰"*i)
            storage+=i  #1+2 = storage..... storage = 3
            i+=1 #3
            chg_cnt +=1 #2


    else:
        if (i-1)%2 ==1: # i-1을 해주는 이유는 다음과 같다. : 위의 length > storage에서, i값이 짝수냐 홀수냐에 따라 서로 다른 조건문으로 들어가게 된다.
                        # 이때에, i값에 따른 if문에서 조건에 들어가게 되는 i값과, i값에 따른 조건문이 끝날 때에 i값이 서로 다르다. i+=1이라는 코드 하나 때문!
                        # 결론적으로, if length > storage가 불만족일 때의(특정순간) i값이 +1이 되며 if length > storage가 끝나기 때문에, i-1을 해주는 것이다.
            print("마지막 색 : {}".format("검"))
        else:
            print("마지막 색 : {}".format("흰"))
        print(chg_cnt-1) # chg_cnt-1을 해주는 이유또한 i-1의 이유와 같다.
        break