두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 A+B를 출력한다.
예제 입력 1
1 1
2 3
3 4
9 8
5 2
예제 출력 1
2
5
7
17
7
위 문제는
a, b = [int(x) for x in input().split()]
while 0<a<10 and 0<b<10:
print(a+b)
a, b = [int(x) for x in input().split()]
다음과 같이 나타낼 경우 input()의 특성으로 인해 시스템상 종료 시점이 없는 무한 루프에 빠질 수 있다. (0<a<10 and 0<b<10 인 경우)
때문에
import sys
for line in sys.stdin:
a, b = map(int, line.split())
print(a+b)
이와 같이 stdin(=standard input)을 사용해야한다.
(1)read() - 파일 내용 전체를 가져와 문자열로 반환한다.
(2)readline() - 파일의 한 줄을 가져와 문자열로 반환합니다. 파일 포인터는 그 다음줄로 이동한다.
(3)readlines() - 파일 내용 전체를 가져와 리스트로 반환합니다. 각 줄은 문자열 형태로 리스트의 요소로 저장된다.
import sys
N, *M = map(int, sys.stdin.read().split())
print(min(M), max(M))
이때 read()가 아닌 readlines()를 사용할 경우
AttributeError: 'list' object has no attribute 'split’ 라는 오류가 발생한다.
string()만 split()의 속성을 가질 수 있기 때문이다.
또한,
readline()을 사용할 경우
ValueError: min() arg is an empty sequence 라는 오류가 발생한다.
이는 console창에 N에 해당하는 값만 입력했기 때문이고, 이를 해결하기 위해서는
예) 5 1 5 6 7 8 → N이 5, M이 1 5 6 7 8
이런 식으로 적어야하는 이유는 readline()이 한 줄을 가져와 문자열로 변환하기 때문이다.
예)
import sys
list(map(int, sys.stdin.readline().split()))
한 줄에 여러 값을 받아 공백을 기준으로 나누어 정수값을 리스트화하는 식
세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.
예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.
세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.
첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.
첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 10-2 이하이면 정답이다.
3
40 80 60
75.0
문풀
import sys
A = int(sys.stdin.readline().rstrip())
B = list(map(int, sys.stdin.readline().split()))
High = max(B)
print(sum(B)/(High*A)*100)