[도전 3] 반복문

Tino-Kim·2023년 1월 29일
0

[Coding Test] 준비하기

목록 보기
19/20
post-thumbnail

[도전 3] 반복문

주의할 점 1. 반복문에서 반드시 변수 이용? No!

필요하지 않으면 굳이 변수를 이용할 이유가 없다. 그저 돌리는 횟수로 반복문을 이용 가능하다. 예를 들면, 입력하는 수 만큼 변수를 입력받을 수 있다.

n=int(input())
for _ in range(n): # n회 만큼 변수 입력 받기. 
    price, count=map(int, input().split())

주의할 점 2. input 대신 데이터 입력 받기.

sys의 stdin은 대화형 입력에 사용된다. input와 같은 기능을 수행하기 때문에, 대신 이용 가능하다.

import sys
a, b=map(int, sys.stdin.readline().split()) # 변수 2개 이상인 경우
c=int(sys.stdin.readline()) # 변수 1개인 경우

주의할 점 3. 별찍기.

오른쪽부터 시작하여 별 1개에서 5개까지 찍는 경우, 별의 개수 1부터 5를 맞추기 위하여 n을 지정하고, 조건에 맞게 띄어쓰기를 n을 이용하여 조정해주면 된다. 이 때, 출력 형식이 잘 맞는지 꼭 확인하기.

n=int(input())
for _ in range(n):
    print(" "*(n-1-_) + "*"*(_+1))

주의할 점 4. 예외 처리하기.

코드 실행 시 에러가 발생하는 경우에 코드 멈춰 주기. (무한 반복문에서 유용하게 쓰일 수 있다.)

try:
    실행할 코드
except:
    예외가 발생했을 때 처리하는 코드
## 무한 반복문에서 사용하기

while True:
	try:
    	실행할 코드
	except:
    	예외가 발생했을 때 처리하는 코드

5. 주의할 점 5. 무한 반복문에서 데이터 계속 갱신하기.

(예시) 1110번 : 더하기 사이클

위의 문제와 같이 조건이 많은 경우에는 수도코드로 조건을 나열한 뒤에 코드를 직접 짜보기.

# 0보다 작은 경우 앞에 0 붙여서 2자리 수 만들기
# 26 -> 2+6=8, 68 -> 6+8=14, 84 -> 8+4=12, 42 -> 4+2=6, 26 (4)
# num1+num2=(num1+num2), num2+(num1+num2)[-1]

# 55 -> 5+5=10, 50 -> 5+0=5, 05 -> 0+5=5, 55 (3)
# 1 -> 0+1=1, 11 -> 1+1=2, 12 -> 1+2=3, 13 -> ... -> 1 (60)
# 0 -> 0+0=0, 0 (1)
# 71 -> 7+1=8, 18 => 1+8=9, 89 => 8+9=17, 97 -> ... -> 71 (12)

# 1. 10 미만인 경우에는 앞에 0을 붙여주고 서로 더해주기, 새로운 숫자 등장
# 2. 새로운 숫자 등장

위와 같이 수도코드를 짜고 어떤 값들이 계속적으로 갱신해야 하는지 확인하고, 변수로 만들어줘서 계속 갱신해주기.

num1, num2가 계속 갱신 되면서 이로 인해 새로운 n이 생성된다. 새로운 n은 num2+(num1+num2)[-1] 값을 가지고 있다. 원래의 n은 나중의 새로운 n과 비교해야 하기 때문에, 값이 없어지지 않게 주의해야 한다.

n=input()
if int(n)<10:
    n=n.zfill(2) # 10보다 작은 경우에 앞에 0 붙여주기.
new_n=n
result=0

while True:
    num1=new_n[0]
    num2=new_n[1]
    small_sum=str(int(num1)+int(num2))
    new_n=num2+small_sum[-1]
    result+=1
    
    if n==new_n:
        break
    
print(result)
profile
알고리즘과 데이터 과학과 웹 개발을 공부하는 대학생

0개의 댓글