이번에는 파이썬 백준 3단계 조건문 알고리즘 문제를 풀어보았습니다.
# 2739 구구단
- 입력값을 바탕으로 구구단을 출력하는 문제입니다.
N = int(input())
for i in range(1, 10):
print(f"{N} * {i} = " + str(N * i))
입력받은 정수형 수를 N 변수에 저장한 후 반복문을 바탕으로 구구단이 나오게 출력했습니다.
저는 f-string formatting 방식이 익숙해서 사용했습니다.
반복문을 배울 때 풀어봤던 문제라 쉽게 풀었습니다.
# 10950 A+B -3
- 입력받은 두 정수로 더한 값을 출력하는 문제입니다.
T = int(input()) # 반복할 횟수
for i in range(T):
A, B = map(int, input().split()) # 두 정수
print(A + B)
반복할 횟수를 바탕으로 덧셈을 출력할 수 있도록 반복문을 작성했습니다.
문제는 한 번에 풀 수 있었습니다. 시간이 68ms로 많이 나왔네요.
# 8393 합
- 1부터 정수 n 까지 합하고 출력하는 문제입니다.
n = int(input())
for i in range(n):
n += i
print(n)
정수형 n을 입력받은 후 n을 바탕으로 반복하여 더하는 반복문을 작성했습니다.
어렵지 않은 문제여서 한 번에 맞췄습니다.
# 25304 영수증
- 구매한 물건 가격과 영수증의 가격이 일치 여부에 따라 YES, NO를 출력하는 문제입니다.
X = int(input()) # 영수증 총 금액
N = int(input()) # 구매한 물건의 종류 수
P = int() # 물건들의 총 금액
for i in range(N):
a, b = map(int, input().split()) # a는 물건의 가격, b는 물건의 개수
P += (a * b)
if P == X:
print('Yes')
else:
print('No')
문제의 내용만으로 한계를 느껴서 총 금액을 넣을 P를 추가하여 만들었습니다.
그 후 X와 P를 비교하여 YES와 NO를 출력하도록 조건문을 작성했습니다.
문제는 한 번에 맞췄습니다.
# 25314 코딩은 체육과목 입니다.
- 정수 N을 바탕으로 정수 자료형의 이름을 출력하는 문제입니다.
N = int(input())
while N % 4 == 0: # N을 4로 나눈 후 나머지가 0일 때
print("long " * (N//4) + "int")
break
앞에 조건을 넣어야 한다고 생각해서 for 반복문이 아닌 while 반복문을 사용했습니다.
그 후 N을 4로 나눈 몫을 "long "에 곱했습니다.
문제는 한 번에 맞췄습니다.
# 15552 빠른 A+B
- 덧셈을 계속 출력하는 문제입니다.
import sys
T = int(input())
for i in range(T):
A, B = map(int, sys.stdin.readline().split())
print(A+B)
이번 문제는 sys.stdin.readline()을 사용하여 문제를 풀었습니다.
input()을 사용하니 문제가 계속해서 돌더라구요.
이 문제의 시작에 보면 sys.stdin.readline()를 사용하라고 제시하고 있습니다.
- import sys
- 인터프리터에 의해 사용되거나 유지되는 일부 변수와 인터프리터와 강하게 상호 작용하는 함수에 대한 액세스를 제공합니다.
input()을 사용해서 시간초과가 계속 나왔습니다.
그래서 sys.stdin.readline()를 사용하여 맞췄습니다.
# 11021 A+B -7
- 두 정수를 바탕으로 합을 출력하는 문제입니다.
T = int(input()) # 반복 횟수
for i in range(T):
A, B = map(int, input().split())
print(f"Case #{i+1}: " + str(A + B))
위의 반복문 문제들과 비슷한 문제입니다. 다만 출력할 때 앞에 붙는 내용이 있습니다.
문제는 한 번에 맞출 수 있었습니다.
# 11022 A+B -2
- 11021과 출력만 다르게 하는 문제입니다.
T = int(input())
for i in range(T):
A, B = map(int, input().split())
print(f"Case #{i+1}: {A} + {B} = {A+B}")
문제는 11021과 동일하게 풀었습니다.
문제는 한 번에 풀었습니다.
# 2438 별 찍기 -1
- 반복문을 연습할 때 많이 풀었던 별을 찍는 문제입니다.
T = int(input())
for i in range(T):
print('*' * (i + 1))
T번 반복해서 별을 찍는 문제입니다.
*
**
***
****
*****
이런 식으로 출력이 됩니다.
문제는 한 번에 맞췄습니다.
# 2439 별 찍기 -2
- 2438문제를 오른쪽 정렬해서 푸는 문제입니다.
T = int(input())
for i in range(T):
print(('*' * (i + 1)).rjust(T))
rjust()를 사용해서 오른쪽부터 출력이 되도록 작성했습니다.
- str.rjust(width[, fillchar])
- 주어진 문자열을 주어진 길이에 맞춰 오른쪽으로 정렬합니다.
문제를 한 번 틀렸는데 .rjust(T)가 아닌 .rjust(5)를 넣어 출력 형식이 잘못되었다는 오류를 받았습니다.
그 후 T로 바꾼 후 맞췄습니다.
# 10952 A+B -5
- 계속 반복해서 덧셈을 출력하는 문제입니다. 0 과 0이 들어오면 종료해야합니다.
while True:
A, B = map(int, input().split())
if (A and B) == 0: # A와 B가 0이면
break
print(A+B)
while 반복문을 사용하여 문제를 풀었습니다.
2번 틀리고 2번 맞췄습니다.
A와 B가 0인 경우를 조건으로 두고 출력해야하는데 그렇지 못해서 2번 틀렸습니다.
정답이 2번인 경우는 원래 풀었던 것보다 조금 줄이고 싶어서 다시 정답을 맞췄습니다.
# 10951 A+B -4
- 반복해서 덧셈을 출력하는 문제입니다.
while True:
try: # 예외 처리
a, b = map(int, input().split())
print(a + b)
except:
break
while 반복문을 사용해서 작성했습니다.
그리고 try-except를 사용해서 예외 처리를 하였습니다.
문제를 2번 틀렸습니다. 제가 예외 처리하는 것을 생각하지 못했습니다.
지금까지 3단계 반복문에 있는 12문제를 풀어봤습니다.
제가 정답을 맞추는 과정을 기록하는 글입니다.