본문 바로가기
알고리즘/백준

반복문(2739, 10950, 8393, 25304, 15552, 11021, 11022)

by 수쨔앙 2022. 9. 3.

2739

문제 N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.
입력 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.
출력 출력형식과 같게 N*1부터 N*9까지 출력한다.
1)
a = int(input())

for i in range(1, 10):
    print(a, '*', i, '=', a*i)

2)
a = int(input())
for i in range(1, 10):
    print(f"{a} * {i} = {a * i}")

print(a, '*', i, '=', a*i) 이렇게 쓸 수도 있지만

print(f"{a} * {i} = {a * i}") 이렇게 쓸 수도 있다는것!!

 

 

 

10950

문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력 각 테스트 케이스마다 A+B를 출력한다.
num = int(input())
lst=[]

for i in range(num):
    a, b = map(int, input().split())
    lst.append(a+b)

for i in range(num):
    print(lst[i])

빈 리스트를 만들어주고 거기에 저장 시켰다가 하나씩 찍어준건데 

사람들 답을 보다가 아래처럼 적은 사람도 정답이라고 되어있던데 이게 맞는건가??

아래 식은 돌려보면 따로따로 찍히던데..... 흠....

num = int(input())

for i in range(num):
    a, b = map(int, input().split())
    print(a+b)

 

 

8393

문제 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.
입력 첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.
출력 1부터 n까지 합을 출력한다.
num = int(input())
sum = 0

for i in range(num+1):
    sum += i

print(sum)

 

 

25304

문제 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.
영수증에 적힌,
  • 구매한 각 물건의 가격과 개수
  • 구매한 물건들의 총 금액
을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.
입력 첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다.
둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.
이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.
출력 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다. 일치하지 않는다면 No를 출력한다.
제한
  •  1≤X≤1000000000
  •  1≤N≤100
  •  1≤a≤1000000
  •  1≤b≤10
x = int(input())
n = int(input())
sum = 0

for i in range(n):
    a, b = map(int, input().split())
    sum += a*b

if x==sum:
    print('Yes')
else:
    print('No')

 

 

15552

문제 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.
C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다.
Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다.
Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다. 단, 이때는 맨 끝의 개행문자까지 같이 입력받기 때문에 문자열을 저장하고 싶을 경우 .rstrip()을 추가로 해 주는 것이 좋다.
또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다.
자세한 설명 및 다른 언어의 경우는 이 글에 설명되어 있다.
이 블로그 글에서 BOJ의 기타 여러 가지 팁을 볼 수 있다.
입력 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
출력 각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.
import sys
n = int(sys.stdin.readline())
lst = []

for i in range(n):
    a, b = map(int, sys.stdin.readline().split())
    lst.append(a+b)

for i in range(n):
    print(lst[i])

빠르게 돌리기 위해 이제부터는 input 대신에 아래 식을 사용해야한다!

 

한 개의 정수를 입력받을 때

import sys
a = int(sys.stdin.readline())

 

정해진 개수의 정수를 입력받을 때

import sys
a,b,c = map(int,sys.stdin.readline().split())

https://velog.io/@yeseolee/Python-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%85%EB%A0%A5-%EC%A0%95%EB%A6%ACsys.stdin.readline

 

[Python 문법] 파이썬 입력 받기(sys.stdin.readline)

파이썬으로 코딩 테스트를 준비한다면, 반드시 알아야 할 입력방식인 sys.stdin.readline()에 대한 정리 입니다.

velog.io

이분이 정말 잘 정리해 주셨다!

 

 

 

11021

문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력 각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.
import sys
n = int(sys.stdin.readline())
lst = []

for i in range(n):
    a, b = map(int, sys.stdin.readline().split())
    lst.append(a+b)

for i in range(n):
    print(f'Case #{i+1}: {lst[i]}')

똑같이 list에 담았지만 앞에 Case #번호를 붙여줬다

i는 0부터 시작이니까 출력할때는 i+1로 해주자!

 

 

 

11022

문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력 각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다.
import sys
n = int(sys.stdin.readline())
lst = []
lst_a = []
lst_b = []

for i in range(n):
    a, b = map(int, sys.stdin.readline().split())
    lst.append(a+b)
    lst_a.append(a)
    lst_b.append(b)

for i in range(n):
    print(f'Case #{i+1}: {lst_a[i]} + {lst_b[i]} = {lst[i]}')

 

만약에 리스트로 나와야되는게 아니라면 밑에 식도 가능하다!

import sys

n = int(input())
for i in range(n):
    a, b = map(int, sys.stdin.readline().split())
    print(f'Case #{i + 1}: {a} + {b} = {a + b}')

 


잉? 이번 글에서 한 7문제는 하나도 안틀렸다!

싱기방기ㅎㅎㅎ 

728x90

댓글