문제
https://www.acmicpc.net/problem/10823
문제 설명
숫자와 ','로만 이루어진 문자열 S를 입력받고 S에 포함되어 있는 자연수의 합을 구하는 문제이다.
문지열 S는 여러 줄에 걸쳐서 주어지며, 최대 길이는 10000이다.
','는 연속해서 주어지지 않는다.
코드
#input = __import__('sys').stdin.readline
def main():
res = ''
while True:
try:
string = input()
res += string
except EOFError:
break
print(sum (list(map(int, res.strip().split(',')))))
if __name__ == "__main__":
main()
import sys
def main():
res = ''
for string in sys.stdin:
res += string.strip()
print(sum(list(map(int, res.split(',')))))
if __name__ == "__main__":
main()
코드 설명
1. res라는 빈 문자열을 생성한다.
2. while문, if을 이용한 무한 루프를 생성하고 문자열을 입력받아 res에 이어붙인다.
+ if문을 이용할 때는 문자열 마지막에 '\n'가 함께 입력되므로 strip을 이용하여 제거해준다.
3. EOF (End Of File) Error가 발생하면 반복문을 종료한다.
4. res의 ','를 기준으로 문자열을 분리하고 정수로 만들어 그들의 합을 출력한다.
알고리즘 문제에서 입력 값이 몇 줄이 주어지는지 나와있지 않으면 EOF를 이용해 문제를 풀어야한다.
while문 코드 맨위 주석처리를 해제하여 readline함수를 사용하면 ctrl + z를 눌러도 EOF에러가 발생하지 않아 무한 루프에서 빠져나올 수 없다.
일반적으로 파일에서 readline 함수를 사용하여 입력을 받을 때 파일의 끝에 도달하면 빈 문자열 ('')을 반환한다.
그러나 파이썬에서 readline함수는 파일의 끝에 도달하면 빈 문자열 대신 None을 반환한다.
이는 파이썬 설계에서 일관성을 유지하고 사용자가 더 편리하게 코드를 작성할 수 있도록 하기 위함이다.
'Koala - 11기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/C++] 10867번: 중복 빼고 정렬하기 (0) | 2023.07.18 |
---|---|
11기 기초알고리즘 스터디 출석부 (0) | 2023.07.17 |
[백준/C++] 1350번 진짜 공간 (0) | 2023.07.16 |
[백준/Python] 12756번: 고급여관 (0) | 2023.07.16 |
[백준/C언어] 20499번 Darius님 한타 안 함? (0) | 2023.07.16 |