
✅ 문제
입력된 값 그대로 출력하는 프로그램 짜기
📥 입력
입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
📥 출력
입력 받은 그대로 출력한다.
💡 풀이
처음에는 엥? 이게 정답률 30퍼센트 밖에 안 된다구? 생각했는데 나도 틀렸다. 보통은 문제에서 n개의 줄에 입력을 받으라는 반복 횟수가 주어지는데 이 문제에서는 n을 알려주지 않는다. 입력값이 몇 번 주어지는지는 모르지만 입력된 값 그대로 출력해야하는 문제이다. 그래서 while문을 돌려주고 조건을 만족하면 break를 걸어 주는 게 핵심이다.
input()과 sys.stdin.readlines()를 이용하여 두 가지로 풀이했다.
✅ 1. input() 함수를 이용한 풀이
while True:
try:
print(input())
except EOFError:
break
input() 함수 사용 시 EOF 에러발생시 try-except 구문으로 break를 걸어줌으로써 해결하였다.
여기서 try-except문으로 예외처리를 해준 이유는 만약 줄이 모두 끝나게 되면면 입력 값이 더 이상 없어서 EOFError가 뜰 것이기 때문이다. EOFError는 End-Of-File의 줄임말로, 말 그대로 입력값이 없어지는 상황을 처리해준다.
✅ 2. sys.stdin.readlines() 를 이용한 풀이
import sys
words = sys.stdin.readlines()
for word in words:
print(word.rstrip())
여기서는 try-except구문을 쓰지 않는다. 만약 try-except처리를 하게 되면 출력 초과 오류가 난다.
여기서 input()과 sys.stdin.readline()의 차이가 있다. input()은 EOF를 받을 때 EOFError를 일으키지만 sys.stdin.readline은 EOF를 받을 때 빈 문자열을 리턴 한다. 따라서 오류가 발생하지 않는다.
만약에 sys.stdin.readline 함수를 사용하고 싶다면, EOFError를 발생시키지 않고 EOF를 빈 문자열로 받는 특성을 이용해 if 문으로 확인하는 식으로 코드를 작성하면 될 것이다.
import sys
while True:
words = sys.stdin.readline().rstrip()
if s == '':
break
else:
print(words)
'Algorithm > BaekJoon' 카테고리의 다른 글
[백준] 1330번 두 수 비교하기 - 자바 / java (2) | 2024.04.02 |
---|---|
[백준] 10172번 개 - 자바/java (0) | 2024.04.02 |
[백준] 10171번 고양이 - 자바/java (0) | 2024.04.02 |
[백준] 11719번 그대로 출력하기2 - 자바/java (0) | 2024.03.28 |
[백준] 10869번 사칙연산 - 파이썬/python3 (1) | 2024.03.27 |

✅ 문제
입력된 값 그대로 출력하는 프로그램 짜기
📥 입력
입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
📥 출력
입력 받은 그대로 출력한다.
💡 풀이
처음에는 엥? 이게 정답률 30퍼센트 밖에 안 된다구? 생각했는데 나도 틀렸다. 보통은 문제에서 n개의 줄에 입력을 받으라는 반복 횟수가 주어지는데 이 문제에서는 n을 알려주지 않는다. 입력값이 몇 번 주어지는지는 모르지만 입력된 값 그대로 출력해야하는 문제이다. 그래서 while문을 돌려주고 조건을 만족하면 break를 걸어 주는 게 핵심이다.
input()과 sys.stdin.readlines()를 이용하여 두 가지로 풀이했다.
✅ 1. input() 함수를 이용한 풀이
while True:
try:
print(input())
except EOFError:
break
input() 함수 사용 시 EOF 에러발생시 try-except 구문으로 break를 걸어줌으로써 해결하였다.
여기서 try-except문으로 예외처리를 해준 이유는 만약 줄이 모두 끝나게 되면면 입력 값이 더 이상 없어서 EOFError가 뜰 것이기 때문이다. EOFError는 End-Of-File의 줄임말로, 말 그대로 입력값이 없어지는 상황을 처리해준다.
✅ 2. sys.stdin.readlines() 를 이용한 풀이
import sys
words = sys.stdin.readlines()
for word in words:
print(word.rstrip())
여기서는 try-except구문을 쓰지 않는다. 만약 try-except처리를 하게 되면 출력 초과 오류가 난다.
여기서 input()과 sys.stdin.readline()의 차이가 있다. input()은 EOF를 받을 때 EOFError를 일으키지만 sys.stdin.readline은 EOF를 받을 때 빈 문자열을 리턴 한다. 따라서 오류가 발생하지 않는다.
만약에 sys.stdin.readline 함수를 사용하고 싶다면, EOFError를 발생시키지 않고 EOF를 빈 문자열로 받는 특성을 이용해 if 문으로 확인하는 식으로 코드를 작성하면 될 것이다.
import sys
while True:
words = sys.stdin.readline().rstrip()
if s == '':
break
else:
print(words)
'Algorithm > BaekJoon' 카테고리의 다른 글
[백준] 1330번 두 수 비교하기 - 자바 / java (2) | 2024.04.02 |
---|---|
[백준] 10172번 개 - 자바/java (0) | 2024.04.02 |
[백준] 10171번 고양이 - 자바/java (0) | 2024.04.02 |
[백준] 11719번 그대로 출력하기2 - 자바/java (0) | 2024.03.28 |
[백준] 10869번 사칙연산 - 파이썬/python3 (1) | 2024.03.27 |