본문 바로가기
CS/알고리즘

백준 11719 & 11720

by 데브겸 2023. 9. 21.

 

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

 

Iterating each character in a string using Python

How can I iterate over a string in Python (get each character from the string, one at a time, each time through a loop)?

stackoverflow.com

 

 

따라서 아래 풀이처럼 좀 더 단순화 할 수도 있고

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))