개념
값 하나와 한 줄 읽기
토큰 입력은 공백이나 줄바꿈을 기준으로 값을 나누어 읽습니다. 한 줄 입력은 문장 안의 공백을 포함하여 읽습니다.
| 동작 | C++ | Java | Python |
|---|---|---|---|
| 정수 읽기 | cin >> n | sc.nextInt() | int(input()) |
| 단어 읽기 | cin >> s | sc.next() | input().split()으로 단어 분리 |
| 공백 포함 한 줄 | getline(cin, s) | sc.nextLine() | input() |
| 두 정수 읽기 | cin >> a >> b | nextInt() 두 번 | a, b = map(int, input().split()) |
| 값과 줄바꿈 출력 | cout << x << '\n' | System.out.println(x) | print(x) |
| 두 값 사이 공백 | cout << a << ' ' << b | System.out.print(a + " " + b) | print(a, b) |
Python의 input()은 한 줄을 읽습니다. 입력이 여러 줄에 걸쳐 있으면 줄마다 읽거나 빠른 입출력의 토큰 읽기를 사용합니다.
토큰 입력 다음에 줄 입력하기
C++의 cin >> n과 Java의 nextInt()는 숫자 뒤의 줄바꿈을 남깁니다. 바로 이어서 한 줄을 읽으면 그 줄바꿈까지의 빈 문자열을 읽을 수 있습니다.
다음 줄부터 문장을 읽는 입력 형식이라면 C++은 cin.ignore(numeric_limits<streamsize>::max(), '\n'), Java는 sc.nextLine()으로 현재 줄의 나머지를 먼저 읽습니다. 이어서 한 줄 입력을 수행합니다.
복잡도
입력과 출력의 전체 문자 수를 이라고 합니다.
| 연산 | 시간복잡도 | 공간복잡도 |
|---|---|---|
| 문자 읽기·출력 | 한 줄 저장 시 해당 줄 길이에 비례 |
예제
문제
문장을 그대로 출력하고, 두 양의 정수의 합을 구하여라.
입력
첫째 줄에 영어 대문자와 공백으로 이루어진 문장이 주어진다. 길이는 이상 이하이다.
둘째 줄에 보다 작은 두 양의 정수가 공백을 사이에 두고 주어진다.
출력
첫째 줄에 문장을 그대로 출력한다. 둘째 줄에 두 수의 합을 출력한다.