본문 바로가기
알고리즘-python/개념 정리하기

백준 알고리즘 문제에서 입력 받기

by 빅데이터1020 2020. 7. 9.
SMALL

프로그래머스 알고리즘 문제풀이 연습을 시작한지도 벌써 3개월차로 접어들었습니다.

2단계 문제를 풀다가 백준 져지를 알게 되었고, 스터디에서 두 가지 문제풀이를 병행하고 있어요.

 

두 가지를 풀다보니 프로그래머스 풀이에서 문제되지 않았던 부분에서 고민이 있었습니다.

 

"입력을 어떻게 받지...?"

 

input()을 알긴 해도 입력값을 끊어서 받는다던가, 한꺼번에 받는다던가 하는 부분에서 막혔습니다.

이번 기회에 입력받기에서 알게된 부분을 정리해봅니다.

 

split()

문자열을 특정 구분자로 나누고 싶을 때 split() 함수 사용

a = '1 2 3 4'.split()
print(a)   #['1', '2', '3', '4']

'1 2 3 4' 문자열을 공백을 분리기준으로 삼아서 '1', '2', '3', '4' 로 분리하고 리스트 a로 저장

(split(' ')을 해도 동일한 결과가 나옵니다.)

 

x, y, z = '1 2 3'.split()
print(x)  #1
print(y)  #2
print(z)  #3

분리되는 개수만큼 변수를 지정해주면 각각의 변수에 분리된 값이 자동으로 저장됩니다.

 

문제풀이에서 자주 마주쳤던 것은 '입력받은 값을 공백을 기준으로 분리'하는 것입니다.

백준에서는 입력값이 공백을 기준으로 띄어쓰기 되어있어서 input().split()을 활용했습니다.

a, b = input().split()

# a, b = input().split('기준문자열')
# a, b = input('문자열').split()
# a, b = input('문자열').split()
# a, b = input('문자열').split('기준문자열')

 

 

strip()

strip() -> 문자열 양쪽 공백을 모두 삭제

lstrip() -> 문자열 왼쪽 공백을 모두 삭제

rstrip() -> 문자열 오른쪽 공백을 모두 삭제

a = ' Python '
print(a.lstrip())  #'Python '
print(a.rstrip())  #' Python'
print(a.strip())   #'Python'

 

* 괄호 안()에 삭제할 문자들을 넣어서 삭제할 수 있습니다.

b = ',Python.,'
print(b.lstrip(','))  #'Python.,'
print(b.rstrip(','))  #',Python.'
print(b.strip(','))   #'Python.'

 

sys.stdin.readline

한 줄을 입력받을 때 사용합니다.

sys.stdin.readline()을 통해 입력받은 한 줄을 iterable 한 컨테이너에 저장해서 출력할 수 있습니다.

import sys

for x in sys.stdin.readline():
    print(x)

print(x)의 두 가지 버전. 띄어쓰기까지 입력받고 분리해주는 것을 확인할 수 있습니다.

입력받은 한 줄을 한번에 리스트로 저장할 수도 있습니다.

import sys

lines = list(map(int, sys.stdin.readline().split()))
print(lines)   #1234 입력받으면 lines = [1234]

 

LIST