⭕풀이:
N = int(input())
for i in range(1,10): #i에 1~9를 하나씩 대입해 i를 1~9까지의 범위를 반복하게 해라.
print(N, '*', i, '=', N*i)
📌필요지식
1) for문 사용정의
in
뒤에 위치한 반복 가능한 iterable 자료형의 요소를 하나씩 꺼내서 변수에 선언하게 됩니다. 이번 문제에서는 iterable 자료형 위치에 range 함수를 이용해서 1부터 9까지의 숫자 범위를 입력하였습니다. 1부터 9까지 하나씩 꺼내지는 숫자는 2 { i } = { 2 i }와 같은 형태에서 ' i ' 위치에 들어오게 됩니다.2)range문 사용정의
⭕풀이:
N = int(input())
for _ in range(N): #반복할 변수가 없으므로 변수 칸에 '_'을 넣고 ':'다음에 나올 내용을 N만큼 반복해라.
A,B = map(int, input().split())
print(A+B)
📌필요지식
1) for _ in range(N)
⭕풀이:
n = int(input())
total = 0
for i in range(1, n+1):
total += i
print(total)
⭕풀이:
X = int(input())
N = int(input())
sum = 0
for i in range(N):
a,b= map(int, input().split())
sum += a*b
if sum == X:
print('Yes')
else:
print('No')
⭕풀이:
import sys #sys모듈 읽어들이기
t = int(sys.stdin.readline()) #sys.stdin.readline() = input()
for _ in range(t):
a,b = map(int, sys.stdin.readline().split())
print(a+b)
📌필요지식
1) stdin.readline
이번 문제는 문자를 입력받는 input
함수 대신 sys모듈
안의 stdin.readline
함수를 사용하는 문제입니다. 백준 온라인 저지에서 문제를 풀면 제출한 코드를 실행시키는데 걸리는 시간을 확인할 수 있습니다. 그리고, 그동안 풀었던 문제들에서 input
함수 대신 sys모듈
안의 stdin.readline
함수를 사용하면 시간이 단축되는 것을 볼 수 있습니다. 코드가 실행되는 시간을 줄일 때 유용하게 이용할 수 있는 함수입니다.
하지만, 저의 경우 이 문제 이후에는 주로 input 함수를 사용했습니다. 시간이 단축되긴 하지만 input 함수를 사용해도 시간 초과가 발생하지 않고 문제를 풀 수 있었기 때문입니다. 그런데 이번 문제는 input 함수를 사용하는 경우 시간 초과가 발생해서 문제를 풀 수가 없었습니다. 이 문제에서 제시한 대로 input
대신 sys.stdin.readline
을 사용해야만 문제를 풀 수 있습니다.
⭕풀이:
test_case = int(input())
for x in range(1, test_case+1):
A, B = map(int, input().split())
print(f'Case #{x}: {A+B}')
⭕풀이:
test_case = int(input())
for x in range(1, test_case+1):
A, B = map(int, input().split())
C = A+B
print(f'Case #{x}: {A} + {B} = {C}')
⭕풀이:
N = int(input())
for i in range(1, N+1):
print('*' * i)
⭕풀이:
N = int(input())
for i in range(1, N+1):
print(" "* (N-i) + '*' * i)
⭕풀이:
while True: #n값이 정해져있지 않기 때문에 while:True를 통해 계속 반복하게 됨.
a, b = map(int,input().split())
if(a == 0 and b ==0):
break
else:
print(a+b)
📌필요지식
1) while문
[조건문]
이 참(True)인 경우 수행부분을 진행하고, [조건문]
이 거짓(False)인 경우 while문을 빠져나갑니다.2) while문의 break
break
는 반복문 중간에 반복문을 탈출 하게 만들기 위해 사용합니다.3) while문의 continue
continue
입니다.[조건문]:
으로 올라가서 [조건문]
이 True인지 False 인지 확인하고, True이면 다시 수행부분1~2 이렇게 수행하게 됩니다. [조건문]
이 False이면 당연하게도 while 반복문을 나가게 됩니다.
⭕풀이:
while True:
try:
A, B = map(int, input().split())
except:
break
print(A+B)
📌필요지식
1)try - except 구문 설명
파이썬에서 구문 오류가 발생 할 때 해결할 수 있는 코드입니다. 프로그램 중에는 사용자가 무엇인가를 입력해야 하는 경우 에러가 발생할 가능성이 있습니다. 숫자를 입력해야 하는데 문자를 입력한다던가 실수를 입력해야 하는데 정수를 입력하는 등이 그런 예입니다. 백준 알고리즘 문제에서는 잘못 입력될 가능성이 없기 때문에 구문 오류에 대해 고려하지 않고 문제를 풀고 있지만 여러 가지 에러로 인해 프로그램이 실행되지 않을 수가 있습니다. 이러한 에러가 발생할 여지가 있는 경우에 try - except
구문을 이용하면 에러가 발생돼도 프로그램이 멈추지 않고 계속 진행될 수 있도록 만들 수 있습니다.
try - except
구문의 기본적인 구조는 try
구문 쪽에 에러가 발생할 가능성이 있는 코드를 작성하고 except
구문 쪽에 예외 발생 시 실행할 코드를 작성하는 겁니다. 이렇게 try - except
구문으로 코드를 작성해두면 에러가 없을 때는 try
구문을 실행하고서 except
를 지나쳐서 그 다음 코드를 계속 진행해나가고 에러가 발생하면 except
구문을 실행시킵니다.
try
구문에서 input
함수 등으로 무엇인가를 입력받는 코드를 작성하여 에러가 발생할 가능성이 생기는 경우에는 이번 문제에서 작성한 코드처럼 except
구문에서 break
를 이용해서 반복문을 빠져나갈 수도 있지만 print( )
함수를 이용해서 어떤 문장이 출력되도록 코드를 작성해서 사용자로 하여금 정상적인 입력을 유도하면서 무한 반복을 유지시킬 수도 있습니다.
try-except
구문에는 추가적으로 else
, finally
구문을 작성할 수도 있습니다. else
구문에는 에러가 발생하지 않았을 때 실행할 문장을 작성하고, finally
구문에서는 무조건 실행 할 코드를 작성합니다. try
- except
- else
- finally
구문으로 작성하게 되면 보다 촘촘하게 에러에 대한 대비가 가능해집니다.
내용 정리
이번 문제는 두 수로 이루어진 여러 개의 테스트 케이스를 입력받으면 두 수의 합을 출력하는 문제입니다. 테스트 케이스의 숫자가 주어지지 않기 때문에while
반복문을 이용해서 문제를 풀었고, 수가 입력되지 않아 에러가 발생하면 반복문을 끝낼 수 있도록try - except
구문을 활용해서 문제를 풀었습니다.