11719번 - 그대로 출력하기 2
11719번의 경우 11718번과 비슷하지만, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 있을 수 있다는 것이 다름
sys.stdin.readline()의 경우 EOF 에러를 만나면 빈 문자열을 반환하기 때문에 에러를 만나 반환되는 빈 문자열을
- 처리할 경우:
import sys
while True:
try:
word = sys.stdin.printline().rstrip("\n")
if word != "":
print(word)
else:
break
except:
break
입력으로 공백이 들어올 수도 있는데 word != ""에 의해 무시되어 버림
- 처리하지 않을 경우:
import sys
while True:
try:
word = sys.stdin.printline().rstrip("\n")
print(word)
except:
break
맨 마지막에 EOF 에러 처리를 하면서 빈 문자열을 하나 더 출력하므로 출력초과
따라서 sys를 사용하고 싶다면 파일의 끝까지 한 번에 읽어오고 읽은대로 출력하는 read()를 쓰거나
import sys
print(sys.stdin.read())
평범하게 input()으로 코드 작성하기
while True:
try:
print(input())
except:
break
11720번 - 숫자의 합
간단하게 풀려면 문자열을 for문으로 조회해서 풀 수 있음
n = int(input())
numbers = input()
answer = 0
for i in range(n):
answer += int(numbers[i])
print(answer)
근데 조금 더 공부해보니 파이썬의 문자열은 반복 가능하다는 것을 기억해냄...
https://stackoverflow.com/questions/538346/iterating-each-character-in-a-string-using-python
따라서 아래 풀이처럼 좀 더 단순화 할 수도 있고
n = int(input())
numbers = input()
answer = 0
for number in numbers:
answer += int(number)
print(answer)
아니면 map, list 조합으로 아예 int를 원소로 지니는 list로 만들어서 sum()하는 방법도 있다 ;; (이건 좀 충격)
n = int(input())
numbers = list(map(int, input()))
print(sum(numbers))
'CS > 알고리즘' 카테고리의 다른 글
코드업 파이썬 100제 - 6027, 6028, 6029, 6030, 6031 (0) | 2023.09.25 |
---|---|
백준 11721, 2742 (0) | 2023.09.22 |
백준 11718 - input(), sys.stdin.readline(), sys.stdin.readlines() (0) | 2023.09.20 |
백준 10951, 10952 (python) (1) | 2023.09.19 |
[이코테] 다이나믹 프로그래밍 - 금광 (0) | 2023.02.25 |