[2739] 구구단
시간제한 : 1초
메모리제한 : 128MB
문제 : N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.
입력 : 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.
출력 : 출력형식과 같게 N*1부터 N*9까지 출력한다.
풀이
입력받은 수 N에 해당하는 구구단을 출력하면 되는 문제다.
이를 위해 N에 1~9까지의 반복문을 곱해주면 된다.
문제에서 요구하는 출력 형식에 맞추기 위해 f-string을 사용하여 답을 출력한다.
N = int(input())
for i in range(1, 10):
ans = N * i
print(f'{N} * {i} = {ans}')
[10950]
시간제한 : 1초
메모리제한 : 256MB
문제 : 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력 : 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력 : 각 테스트 케이스마다 A+B를 출력한다.
풀이
각 테스트의 개수 T만큼 반복할 수 있도록 범위를 T로 설정하여 반복문을 돌려서, 각 테스트마다 입력되는 A와 B의 합을 출력하면 된다.
T = int(input())
for i in range(T):
A, B = map(int, input().split())
print(A+B)
[8393] 합
시간제한 : 1초
메모리제한 : 256MB
문제 : n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.
입력 : 첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.
출력 : 1부터 n까지 합을 출력한다.
풀이
1부터 n까지 반복문을 돌리면서, 해당하는 숫자를 result 값에 누적적으로 합산하여 출력한다.
n = int(input())
result = 0
for i in range(1, n+1):
result += i
print(result)
[25304] 영수증
시간제한 : 1초
메모리제한 : 1024MB
문제 :
준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.
영수증에 적힌,
- 구매한 각 물건의 가격과 개수
- 구매한 물건들의 총 금액
을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.
입력 :
첫째 줄에는 영수증에 적힌 총 금액 가 주어진다.
둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.
이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.
출력 :
구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다. 일치하지 않는다면 No를 출력한다.
풀이
구매한 물건의 종류 수 N개만큼 반복문을 돌리면서 총 금액을 합산한 후,
조건문을 통해 합산 금액이 영수증에 적힌 금액 X와 같으면 'Yes'를, 다르면 'No'를 출력한다.
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')
[15552] 빠른 A+B
시간제한 : 1초
메모리제한 : 512MB
문제 :
본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.
Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.
또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다.
입력 : 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
출력 : 각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.
풀이
시간 제한이 있는 문제의 경우, 특히 반복문 안에서 input()을 사용하면 시간 초과로 오답 처리 되는 경우가 있다.
시간을 줄이기 위해 파이썬에서 기본적으로 제공하는 sys를 사용해서 sys.stdin.readline().split()을 사용하면 input().split()과 같은 작업을 보다 빠른 시간에 수행할 수 있다.
import sys
T = int(input())
for i in range(T):
A,B = map(int, sys.stdin.readline().split())
print(A+B)
[11021] A+B-7
시간제한 : 1초
메모리제한 : 256MB
문제 : 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력 : 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력 : 각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.
풀이
입력받은 값을 f-string을 통해 테스트 케이스마다 A+B 값이 출력될 수 있도록 출력 형식을 맞춰주면 된다.
import sys
T = int(input())
for i in range(T):
A,B = map(int, sys.stdin.readline().split())
print(f'Case #{i+1}: {A+B}')
'코딩 연습' 카테고리의 다른 글
[백준 2292] 벌집 / 파이썬 (0) | 2022.08.30 |
---|---|
[백준 1712] 손익분기점 파이썬 (0) | 2022.08.29 |
[백준] 단계별로 풀어보기 : 함수 (0) | 2022.08.28 |
[백준] 단계별로 풀어보기 : 1차원 배열 (0) | 2022.08.19 |
[백준] 단계별로 풀어보기 : 조건문 (0) | 2022.08.16 |