문제
문제: 입력 받은 대로 출력하는 프로그램을 작성하시오.
입력: 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
출력: 입력받은 그대로 출력한다.
예제 입력: Hello
Baekjoon
Online Judge
예제 출력: Hello
Baekjoon
Online Judge
풀이
const fs = require('fs');
const input = fs.readFileSync(0, 'utf-8');
console.log(input);
풀이 해석
1. 입력받은 그대로 출력해야하므로 공백도, 탭도, 개행도 그대로 출력해야한다.
더 알아보기
1. 이런 문제는 왜 낼까?
1. 입력/출력 방식에 익숙해지기 위한 문제
- 이 문제를 통해 '내가 쓰는 언어에서 어떻게 입력을 처리하는가'를 익힐 수 있다.
- Python : input()/sys.stdin.readline()
- Java : Scanner, BufferedReader
- JS : fs.readFileSync(0) →내가 쓰는 방식
- 특히 백준은 표준 입력/출력 기반으로 채점되기 때문에, 이걸 익히지 않으면 어떤 문제도 풀 수 없다.
2. EOF(입력 종료)를 다루는 연습
- EOF(End Of File)는 파일 입력 끝에 도달했을 때를 말한다.
- 일반적으로 알고리즘 문제는 입력 줄 수가 주어지지만, 이 문제는 입력 끝을 알려주지 않는다. 그러므로 이 문제는 EOF를 다루는 문제이다.
- 프로그래머가 직접 '언제까지 입력을 읽을지' 판단해야하는 훈련이다.
3. '입력 그대로 출력' 이라는 조건의 중요성
- .trim()을 하면 틀리는 문제이다.
- 즉 이 문제는 '출력 형식에 절대 손대지 마!' 라는 교훈을 주는 문제이다.
4. 온라인 채점 시스템과 친해지기 위한 첫걸음
- 백준을 처음 시작할 때 접하는 문제이다.
- 그래서 코드가 채점되는 방식을 이해하기 위해 이런 단순한 문제부터 시작하는 것이다.
5. 실수를 교훈 삼는 문제
- 많은 사람들이 이 문제에서 trim()을 쓰고 틀린다.
- 그래서 '문제를 정말 잘 읽자!', '출력 형식에 민감하자!' 라는 교훈을 준다.
2. 이 문제가 왜 5단계 마지막 문제에 나온걸까?
1. 문자열을 '가공하지 않고' 그대로 출력하는 것도 문자열 처리의 한 형태이다.
- 앞의 문제들은 모두 문자를 변형, 가공했다면 이 문제는 그동안의 문자열 문제의 반대편 끝을 보여주는 문제이다.
- '문자열은 꼭 가공해야하는 게 아니라, 그대로 출력하는 것도 중요하다' 는 메시지가 담아있는것같다.
2. 실수 유도 문제
- trim()을 쓰면 틀린다. console.log()를 안 쓰면 틀린다. 공백을 무시하거나 개행을 잘못넣어도 틀린다.
- 문자열 처리에서 실수가 많이 나오는 부분을 일부러 유도해서 잡아주는 것이다.
3. 다음 심화 단계로 넘어가기 전에 '기본기 점검'의 역할
- 6단계부터는 조건문, 반복문 조합 등 로직이 더 중요해지기 시작한다.
- 그 전에 정확하게 입력을 받고 출력하는 힘을 다시 한번 확인하는 문제이다.(그냥 쉬운 문제가 아닌 배움의 마무리 퍼즐)
'알고리즘 Node.js' 카테고리의 다른 글
백준 3003문제. 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2025.03.23 |
---|---|
백준 25083문제. 새싹(6단계 시작) (0) | 2025.03.22 |
백준 5622문제. 다이얼 (0) | 2025.03.21 |
백준 2908문제. 상수 (0) | 2025.03.20 |
백준 1152문제. 단어의 개수 (0) | 2025.03.19 |