문제 설명
문제
두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오.
입력
두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)
출력
첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.
예제 입력 1
7 3
예제 출력 1
10
4
21
2
1
문제 해석
이 코드는 두 정수를 입력받아 기본적인 산술 연산을 수행하는 프로그램을 만드는 문제입니다. input 함수의 특징을 명확히 이해하고 있는지 테스트해볼 수 있습니다.
정답 코드
모법 답안
a, b = input().split()
a, b = int(a), int(b)
print(a+b)
print(a-b)
print(a*b)
print(a//b)
print(a%b)
입력, 형 변환, 그리고 다양한 산술 연산자의 사용을 보여주는 좋은 정답코드 입니다. 먼저 input()으로 사용자로부터 입력을 받습니다. split()으로 입력된 문자열을 공백을 기준으로 나눕니다. 나눈 결과를 a와 b에 각각 할당합니다. 문자열로 입력된 a와 b를 정수로 변환합니다. 이후 두 수의 덧셈/뺄셈/곱셈/몫/나머지 연산 결과를 출력하면 됩니다.
추가 풀이 1
a, b = map(int, input().split())
print(a+b)
print(a-b)
print(a*b)
print(a//b)
print(a%b)
코드는 앞서 본 정답 코드와 같은 기능을 하지만, 입력 처리 방식이 조금 다릅니다. 먼저 input().split()으로 사용자의 입력을 받아 공백을 기준으로 나눕니다. map(int, ...)를 사용해 분리된 각 문자열을 바로 정수로 변환합니다. 변환된 두 정수를 a와 b에 각각 할당합니다.
장점
- 코드 간결성 map() 함수를 사용하여 입력 받기와 정수 변환을 한 줄에 처리합니다.
- 효율성: 각 입력값을 개별적으로 변환하는 대신, 한 번에 모든 입력을 변환합니다.
- 확장성: 입력받을 숫자가 더 많아져도 코드를 크게 수정할 필요가 없습니다.
추가 풀이 2
lst = list(map(int, input().split()))
print(lst[0]+lst[1])
print(lst[0]-lst[1])
print(lst[0]*lst[1])
print(lst[0]//lst[1])
print(lst[0]%lst[1])
리스트를 사용할 줄 안다면 이 방법을 시도해보셔도 좋습니다. 각 줄을 자세히 살펴보겠습니다.
1. lst = list(map(int, input().split()))
- input().split()으로 사용자의 입력을 받아 공백을 기준으로 나눕니다.
- map(int, ...)를 사용해 분리된 각 문자열을 정수로 변환합니다.
- list()를 사용해 변환된 정수들을 리스트로 만듭니다.
- 이 리스트를 lst라는 변수에 저장합니다.
2-6. 나머지 부분은 리스트의 인덱싱을 사용하여 연산을 수행합니다:
- print(lst[0]+lst[1]): 리스트의 첫 번째와 두 번째 원소의 합
- print(lst[0]-lst[1]): 첫 번째 원소에서 두 번째 원소를 뺀 값
- print(lst[0]*lst[1]): 첫 번째와 두 번째 원소의 곱
- print(lst[0]//lst[1]): 첫 번째 원소를 두 번째 원소로 나눈 몫 (정수 나눗셈)
- print(lst[0]%lst[1]): 첫 번째 원소를 두 번째 원소로 나눈 나머지
장점:
- 확장성: 입력받은 숫자들을 리스트로 저장하므로, 두 개 이상의 숫자를 쉽게 처리할 수 있습니다.
- 유연성: 리스트의 인덱싱을 통해 특정 위치의 원소에 쉽게 접근할 수 있습니다.
- 재사용성: 저장된 리스트를 다른 연산에 재사용할 수 있습니다.
단점:
- 메모리 사용: 모든 입력값을 리스트로 저장하므로, 입력이 많은 경우 메모리를 더 사용합니다.
- 코드 길이: 리스트 인덱싱을 사용하므로 각 연산 라인이 조금 더 길어집니다.
이 방식은 입력받은 값을 여러 번 사용하거나, 입력의 개수가 가변적일 때 유용할 수 있습니다. 하지만 이 특정 문제에서는 입력이 항상 두 개의 정수라면, 앞서 본 방식들이 더 간결할 수 있습니다.
'알고리즘' 카테고리의 다른 글
[백준] 15596번 정수 N개의 합 - Python3 (0) | 2024.09.07 |
---|---|
[백준] 2562번 최댓값 - Python3 (0) | 2024.09.07 |
[백준] 2739번 구구단 - Python3 (0) | 2024.09.06 |
[백준] 9498번 시험성적 - Python3 (2) | 2024.09.06 |
[백준] 2557번 Hello World - Python3 (0) | 2024.09.06 |