# 막대의 길이는 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
'프로그래밍 > Python' 카테고리의 다른 글
부분합의 최댓값을 구하자. feat.python (0) | 2023.04.13 |
---|---|
개수가 5개 이하인 과일은 과일의 개수가 5가 되도록 과일을 구매한다. 이때 소비해야 하는 돈은? (0) | 2023.04.13 |
369 게임 (0) | 2023.04.06 |
비밀번호 자동 생성기 (0) | 2022.05.10 |
범죄자 리스트 만들기 (0) | 2022.04.12 |