[백준][python] 문제 입력 형식 정리
파이썬을 공부하면서 처음으로 백준에 들어가 문제를 풀게 되었다. 뭔가 ui가 조잡해 보이지만, 있을건 다 있는 것 같았다…?
문제를 보고 코드를 작성하려는데 아예 빈 스크립트가 나오고, 버튼은 딸랑 ‘제출’ 한개… 프로그래머스 처럼 대충 함수를 작성하고 제출을 눌렀더니 오류만 좌르륵 뜬다.
아무리봐도 코드와 로직은 맞는거 같은데 뭐가 문제인지 동기한테 물어보니, 테스트 예제를 입력받을 수있게 코드를 작성해야 한다고 한다.
여러문제를 풀면서 알게 되었는데, 보통 input 맨 첫 줄에 몇개의 입력이 들어올지 정해진다.
내가 작성한 코드는 다음과 같다.
1. sys.sydin.readline() 사용
입력값이 한줄일 때
1
2
import sys
num = int(sys.stdin.readline())
- input 보다 좀 더 빠르게 입력받기 위함. \n 이 들어오면 입력받는 것을 중지하는 방식이다.
- input() 함수 대신 sys.stdin.readline() 을 이용하면 된다.
2. input() 함수를 이용하기
for loop 을 이용해 input 을 계속 받는 방법
- 위 사진에서 첫번째 줄은 테스트 케이스의 갯수다. (2개)
- 밑에 두줄은 각각의 테스트 케이스다.
- loop 함수를 사용해서, 각 테스트 케이스마다 print 를 해줘야 한다.
1
2
3
4
t = int(input())
for i in range(t):
n = int(input())
print(cache[n])
이런 경우도 있다. 문제마다 다르겠지만, 첫번 째 줄에 테스트 케이스의 갯수(n) , 뒤에는 몇개의 입력이 들어올지 정해진다.
예를 들어 다음과 같다.
1
2
3
4
5
6
7
8
9
10
3 6
1 2 15
2 4 7
2 6 6
5 6 8
10 11 12
15 14 17
4 9 10
11 15 19
12 12 12
- 위에 뜻은 3개의 테스트 케이스, 6개의 input 값이다.
1
2
3
4
5
n,m = map(int, input().split()) # 앞의 글자는 n, 뒤의 글자는 m으로 할당됨.
arr = []
for_in range(m): # m번 loop 을 돌면서 input을 arr 에 append
arr.append(list(map(int, input().split())))
아… 백준은 왜 이렇게 만들어놨을까 ㅠㅠ 맘편히 알고리즘만 풀고 싶었는뎁!!
그래도 어려운거 아니니 boilerplate 라고 생각하고 해보쟈.
출처
https://daebaq27.tistory.com/57