파이썬 알고리즘 스터디 #1 숫자 입력의 여러가지 방법

정민·2021년 7월 24일
3

알고리즘을 풀때 다양한 입력 사항이 주어지는데
여러 문제를 풀어봐서 익숙한데도, 막상 빈 코드에 혼자 짜보라고 하면 버벅거리고 결국 내가 짰던 코드를 계속 다시 찾아봐야 하는게 너무 한심해서 정리를 해보려고 한다!

아래의 모든 경우는 list에 입력을 한다는 전제하에 작성하였음!

1. 시간단축

input()

보다는

import sys
num = sys.stdin.readline().rstrip()

이 시간이 더 빠르다. (그치만 유의미한 시간 단축은 아닌 것 같다 ㅎㅎ)

여기서 rstrip()을 쓰는 이유!!
rstrip() 없이 컴파일을 했을 때 <ValueError: invalid literal for int() with base 10: '\n'>
오류가 뜰 때가 있다.
sys.stdin.readline()은 개행문자를 포함한 문자열을 다 받기때문에 rstrip()을 통해 개행문자를 제거해줘야만 한다.

2. 여러 개 숫자를 한 줄에 입력받을 때 (띄어쓰기로 구분해 따로 입력 받을 경우)

graph=list(map(int, sys.stdin.readline().split()))

이러면, 1 2 3 4 5 로 입력받았을 경우
[1,2,3,4,5] 로 저장이 된다.

3. 여러 개 숫자를 한 줄에 입력받을 때 (띄어쓰기 없이 입력받을 경우)

graph=list(map(int, sys.stdin.readline().rstrip()))

이러면 12345로 입력받았을 경우
[1,2,3,4,5] 로 저장 된다.

4. 여러 개 숫자를 여러(n개) 줄에 입력받을 때 (띄어쓰기로 구분해 따로 입력 받을 경우)

graph=[list(map(int, sys.stdin.readline().split())) for _ in range(n)]

이러면,
1 2 3 4 5
6 7 8 9 10 로 입력받았을 경우
[[1,2,3,4,5][6,7,8,9,10]]

5. 여러 개 숫자를 여러(n개) 줄에 입력받을 때 (띄어쓰기 없이 입력 받을 경우)

graph = [list(map(int, sys.stdin.readline().rstrip())) for _ in range(n)]

이러면,
12345
678910 로 입력받았을 경우
[[1,2,3,4,5][6,7,8,9,1,0]] 로 저장이 된다.

...

2,4<->3,5 의 차이가 중요한 듯!
2,4번은 띄어쓰기로 구분을 해줌으로써 두자리 이상의 수도 입력이 가능하고
3,5번은 한글자 기준으로 구분을 하기 때문에 한자리 숫자만 제대로 입력이 가능하다.

문제를 더 풀어보면서 새로운 입출력방법이 또 생기면 수정해야지!!

profile
괴발개발~

0개의 댓글