옥수수와 식빵 그리고 코딩

백준 문제 풀이 for 문, input()대신 sys.stdin.readline()을 사용하는 이유 본문

BaekJoon

백준 문제 풀이 for 문, input()대신 sys.stdin.readline()을 사용하는 이유

옥식 2021. 10. 20. 01:33

2739번

2739번: 구구단 (acmicpc.net)

n = input()
N = int(n)
for i in range(1,10): # 마지막 수는 포함되지 않으므로 9가 아니라 10이다.
    result = N * i
    print(n, '*', i, '=', result) # ,는 띄어쓰기다

10950번

10950번: A+B - 3 (acmicpc.net)

예제 입력부터 난관에 봉착함

입력 개수가 여러개일 때 input()대신 sys.stdin.readline()을 사용하는 이유 : 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

이 개념을 알아야 한다!!!!

import sys
t = int(input())
for i in range(t):
    a,b = map(int, sys.stdin.readline().split(' '))
    print(a+b)

30분 걸림...


8393번

8393번: 합 (acmicpc.net)

n = int(input())
result = 0
for i in range(1, n+1): # 마지막 숫자는 포함되지 않으므로 n이 아닌 n+1이 와야 함.
    result = result + i

print(result)

15552번

15552번: 빠른 A+B (acmicpc.net)

import sys

T = int(input())
for i in range(T):
    a,b = map(int, sys.stdin.readline().split(' ')) # 입력을 5번 받아야 하니 for문 아래에 위치
    result = a+b
    print(result)

한번 배워두니 편하구만

a,b = map(int,sys.stdin.readline().split(' '))은 for문 위에 위치하면 a, b입력이 한번만 이루어진다.

때문에 for문 아래에 위치시켜 T번만큼 반복시킨다.

 


2741번

2741번: N 찍기 (acmicpc.net)

n = int(input())
for i in range(1, n+1): #range(n)을 하면 0~4까지가 출력된다
    print(i)

2742번

2742번: 기찍 N (acmicpc.net)

2741과 반대로 n부터 1까지 거꾸로 출력해야 한다.

range([start,] stop [,step])

start에 n을 넣고, stop을 1로 하면? 아무것도 출력되지 않는다.

그렇다면? start에 n을 넣고, stop을 1을 넣은 상태에서 step에 -1을 넣으면 된다.

참고:https://lightjean.tistory.com/24

 

[Python] for문 거꾸로 반복하기

1부터 n까지 차례대로 출력할 때, C나 C++에서 for문을 사용하여 구현하면 보통 이런 식이다. for (int i = 1; i <= n; i++) { cout << i << '\n'; } n부터 1까지 거꾸로 출력하려면 for문의 초기식, 조건식, 증감..

lightjean.tistory.com

n = int(input())
for i in range(n, 0, -1): #range(star,stop,step)에서 star가 stop보다 큰 경우 step에 -값을 준다
    print(i)

11021번

11021번: A+B - 7 (acmicpc.net)

이 문제의 핵심은 숫자와 문자 합쳐 출력하기 이다.

import sys
t = int(input())
for i in range(t):
    a,b = map(int, sys.stdin.readline().split(' '))
    result = a + b
    case = int(i+1)
    print("Case #" + case + ':', reslt) #can only concatenate str (not "int") to str 오류 발생

이렇게 출력하면 can only concatenate str (not "int") to str 오류가 발생한다.

숫자와 문자를 합칠 경우 

숫자 앞에 str(값)을 붙여 전부 문자로 만들거나

숫자만 있을 경우 int(값)을 붙여 전부 숫자로 만들어 줘야 한다.

참고:https://wakestand.tistory.com/152

 

파이썬 문자와 숫자 합쳐 출력하는 방법

파이썬에서 문자와 숫자를 합쳐 출력하려고 하는 경우 아래와 같은 에러가 발생하는데 Traceback (most recent call last):   File "C:/Users/MyRealm/PycharmProjects/untitled/ContactExample.py", lin..

wakestand.tistory.com

import sys
t = int(input())
for i in range(t):
    a,b = map(int, sys.stdin.readline().split(' '))
    result = a + b
    case = i+1
    print("Case #" + str(case) + ':', str(result)) # 전부 문자열로 바꾸기

11022번

11022번: A+B - 8 (acmicpc.net)

import sys
t = int(input())
for i in range(t):
    a,b = map(int, sys.stdin.readline().split(' '))
    result = str(a + b)
    x = str(i+1)
    A = str(a)
    B = str(b)
    print("Case #" + x + ':', A, '+', B, '=', result)

사실 한번 더 정리해서 print()를 좀 깔끔하게 할 수 있을 것 같은데 너무 졸려서 못하겠다.

TMI 지금 새벽 1시 32분임

3문제 남았는데 내일...

.

.

.


10/20/수

2438번

2438번: 별 찍기 - 1 (acmicpc.net)

n = int(input())
for i in range(n+1):
    print('*' * i)

출력값

range(0)때문에 빈 줄이 하나 생긴다

n = int(input())
for i in range(1,n+1):
    print('*' * i)

range(1)부터 시작하게 하여 빈 줄을 없앴다


2439번

2439번: 별 찍기 - 2 (acmicpc.net)

n = int(input())
for i in range(n):
    empty = ' ' * (n - (i+1))
    star = '*' * (i + 1)
    print(empty + star)

각 줄 번호는 i+1

여백의 개수는 n -(i+1) 

별 개수는 줄 번호와 같음


10871번

10871번: X보다 작은 수 (acmicpc.net)

import sys
n, x = map(int, sys.stdin.readline().split(' '))
num = list(sys.stdin.readline().split(' '))
result = 0
for i in num:
    if i < x:
        result.append(i)
    else :
        continue
print(result)

TypeError: '<' not supported between instances of 'str' and 'int'

num = sys.stdin.readline().split(' ')는 리스트 형태다. 굳이 list()함수 인씌워도 됨

x는 숫자형이고(int()함수를 적용해서), num안의 i는 리스트 안에 있는 문자열 형태라서 오류 발생함.

num도 int()함수 적용해서 해결 이 아니라 리스트 인덱싱으로 리스트 안의 문자를 호출하자

import sys
n, x = map(int, sys.stdin.readline().split(' '))
num = sys.stdin.readline().split(' ')
result = 0
for i in num:
    I = int(i)
    if I < x:
        result.append(I)
    else :
        continue
print(result)

대체 뭐가 문제임????????????????????

 result.append(I)
AttributeError: 'int' object has no attribute 'append'

result안에 숫자형태고, 그래서 I를 숫자형태로 만들어서 추가했는데???????????????????????????

50분동안 이러고 있음 미치고 환장함

 

하..정답 본다..

정답도 보고 친구한테 물어봄.

append 함수는 리스트에 붙을 수 있는데 나는 정수에다가 붙여서 오류난거임..

정수를 문자열로 바꿔서 붙이던가 해야하는데 출력을 정수로 해야하기 때문에 걍 append함수를 이 문제에서는 쓰면 안되는거

 

import sys
n, x = map(int, sys.stdin.readline().split(' '))
num = list(map(int, sys.stdin.readline().split(' '))) # list안에 정수로 넣음

for i in num:
    if i < x:
        print(i, end=' ')

1시간만에 어찌어찌...했다...

'BaekJoon' 카테고리의 다른 글

백준 문제 풀이 while문  (0) 2021.10.20
백준 문제 풀이 if문  (2) 2021.10.18
Comments