A+B - 3 - 파이썬 알고리즘 문제 풀이 시 입력값을 다루는 법

조해빈·2023년 3월 4일
0

백준

목록 보기
3/53

A+B - 3 - 109501번

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

각 테스트 케이스마다 A+B를 출력한다.

풀이

매우 간단한 문제.

for _ in range(int(input())):
    A, B = map(int, input().split())
    print(A + B)

sys.stdin.readline 사용 시 아래와 같다.

import sys
input = sys.stdin.readline

t = int(input())

for _ in range(t):
    a, b = map(int, read().split())
    print(a + b)

자바스크립트만으로 실무, 문제풀이 연습을 했던 나는 입력값을 넣어 테스트 돌리는 개념이 없었어서 이런 종류의 입력값 다루는 수행에 맞닥뜨렸을 때 생소했다.

이 문제의 입력 예시가 이렇다.
변수 t에 첫번째 라인인 5가 할당되고, 이후 나머지 라인들이 a, b에 공백으로 split()되고, map()을 통해 할당되는 것.

파이썬 알고리즘 문제 풀이 시 입력값을 다루는 법

아래와 같이 정리해가면서 외우고 있다.

# 입력이 공백으로 나뉜 한 줄짜리 입력값일 때, 빌트인input()
a = [int(x) for x in input().split()]

## input() 대신 --> map 과 sys.stdin.readline으로 정수의 map()의 list()화
import sys 
input = sys.stdin.readline
a = list(map(int, input().split()))

# -----------
# 다시 말하면, 입력을 공백으로 구분된 한 줄로 받을 때: 
lst = input().split() # 이걸 너무 늦게 알았다 하..
lst = list(map(int, input().split()))

# 여러 라인 입력받아야 할 경우:
a = int(input())
b = int(input())
c = int(input())

## 여러 라인 입력받아야 할 경우 - 문제 풀이 상 총 몇 줄의 입력값인지 고정적이며 그걸 리스트로 보관할 때:
arr = []
for _ in range(9): # 9줄 고정일 때
    num = int(input())
    arr.append(num)

arr = list(int(input()) for _ in range(9))

# 여러 라인 입력받아야 할 경우 - 입력값의 맨 앞에 테스트케이스의 갯수 주어질 때:
c = int(input())
for _ in range(c):
  arr = list(map(int, input().split()))
#
c = int(input())
arr = list(map(int, input().split()) for _ in range(c))

#
# sys.stdin.readline 끝에 \n은 rstrip()으로 없앨 수 있다(값 스트링화 됨)

# 17608
# stack = list(input().strip() for _ in range(c)) # wrong
stack = [int(input()) for _ in range(c)]
# 입력받은 막대기의 높이를 리스트에 저장하는 부분에서 strip() 함수를 사용하였습니다. 하지만 이 경우에는 리스트에 저장된 각각의 문자열의 양쪽 공백을 제거하는 것이 아니라, 문자열의 맨 앞과 맨 뒤의 공백만 제거하게 됩니다. 이러한 경우에는 입력값이 예상과 다르게 처리될 가능성이 있으므로 strip() 함수를 사용하지 않는 것이 좋습니다.

# print - 공백 간격두고 한 줄로 프린트
print(" ".join(map(str, stack)))
profile
UE5 공부하는 블로그로 거처를 옮겼습니다!

0개의 댓글