밑의 링크는 CodeUp에서의 문제 링크입니다.
문제는 링크를 통해서 직접 봐주시길 바랍니다.
주의해야 할 점
1. map, split를 사용하는 입력 방식
실수나 정수인 여러 값들이 입력값일 때,
split 메서드를 사용해 공백이나 어떤 문자를 기준으로 입력값을 여러 값들로 분리하고,
map 내장 함수로 각각의 값들을 int형이나 float형으로 정수, 실수 자료형으로
변환하는 기법은 매우 많이 쓰입니다.
코드 이해부터 하고 나면 다른 문제에서도 외운 듯이 사용해봅시다.
nums = map(int, sys.stdin.readline().split())
2. 최댓값 찾기
보통 다른 언어에서는 여러 값들 중에서 가장 큰 값을 찾을 때
반복문을 사용해서 하나하나 비교해보고 찾습니다.
그런데 파이썬에서는 max 내장 함수라는 최댓값을 반환하는 함수를 제공합니다.
최댓값을 찾을 때는 max 내장 함수를 사용해서 편하게 문제를 풀어봅시다.
예제 설명
1. 첫 번째 예제
- 입력
10 10
9 12
13 8
- 출력
108
- 설명
길이가 1000 이하의 양의 정수값인 3개 운동장의 가로, 세로 길이는 각각 다음과 같습니다.
- 첫 번째 운동장 : 가로 10, 세로 10
- 두 번째 운동장 : 가로 9, 세로 12
- 세 번째 운동장 : 가로 13, 세로 8
주어진 가로, 세로 길이를 곱해 넓이를 구해보면 다음과 같습니다.
- 첫 번째 운동장 넓이 : 10 X 10 = 100
- 두 번째 운동장 넓이 : 9 X 12 = 108
- 세 번째 운동장 넓이 : 13 X 8 = 104
따라서 제일 넓은 운동장의 넓이는 108이므로, 108을 출력합니다.
생각한 풀이 과정
운동장 3개의 가로, 세로 길이를 입력합니다.
각 운동장의 가로, 세로 길이를 곱해서 넓이를 계산한 뒤에 각각 변수에 저장합니다.
max 내장 함수에 운동장 3개의 넓이를 넣어서 최댓값을 구하고, 그 값을 출력합니다.
제출한 파이썬 코드
# readline을 사용하기 위해 import합니다.
from sys import stdin
# 3개 운동장의 가로, 세로의 정수 길이를 공백으로 구분해 입력합니다.
# 각 길이는 1000 이하의 양의 정수값입니다.
# 각각 int형으로 변환합니다.
width1, height1 = map(int, stdin.readline().split())
width2, height2 = map(int, stdin.readline().split())
width3, height3 = map(int, stdin.readline().split())
# 3개 운동장의 가로와 세로를 곱해 넓이를 계산하고 변수에 저장합니다.
schoolyard1 = width1 * height1
schoolyard2 = width2 * height2
schoolyard3 = width3 * height3
# 3개 운동장의 넓이 중 가장 넓은 운동장의 넓이를 출력합니다.
print(max(schoolyard1, schoolyard2, schoolyard3))
제출 결과
느낀 점
코드를 짜고 나니 운동장 3개의 가로, 세로 넓이를 입력받고 넓이를 구할 때
반복문을 사용하는 것이 훨씬 깔끔하다고 생각하게 되네요.
백준에 있는 문제를 풀 때는 반복문을 사용해서 입력을 잘 받았었는데
코드업에서는 그럴 필요가 없던 문제들이 많아서
반복문으로 입력받는 것에 대한 감각이 무뎌졌나 봅니다.
댓글