알고리즘을 풀때 다양한 입력 사항이 주어지는데
여러 문제를 풀어봐서 익숙한데도, 막상 빈 코드에 혼자 짜보라고 하면 버벅거리고 결국 내가 짰던 코드를 계속 다시 찾아봐야 하는게 너무 한심해서 정리를 해보려고 한다!
아래의 모든 경우는 list에 입력을 한다는 전제하에 작성하였음!
input()
보다는
import sys
num = sys.stdin.readline().rstrip()
이 시간이 더 빠르다. (그치만 유의미한 시간 단축은 아닌 것 같다 ㅎㅎ)
여기서 rstrip()을 쓰는 이유!!
rstrip() 없이 컴파일을 했을 때 <ValueError: invalid literal for int() with base 10: '\n'>
오류가 뜰 때가 있다.
sys.stdin.readline()은 개행문자를 포함한 문자열을 다 받기때문에 rstrip()을 통해 개행문자를 제거해줘야만 한다.
graph=list(map(int, sys.stdin.readline().split()))
이러면, 1 2 3 4 5 로 입력받았을 경우
[1,2,3,4,5] 로 저장이 된다.
graph=list(map(int, sys.stdin.readline().rstrip()))
이러면 12345로 입력받았을 경우
[1,2,3,4,5] 로 저장 된다.
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]]
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번은 한글자 기준으로 구분을 하기 때문에 한자리 숫자만 제대로 입력이 가능하다.
문제를 더 풀어보면서 새로운 입출력방법이 또 생기면 수정해야지!!