본문 바로가기
알고리즘/CodeUp PS

[CodeUp][Python] 1296번 : 직사각형의 최대 넓이

by 빛밤하늘 2021. 9. 28.
반응형

밑의 링크는 CodeUp에서의 문제 링크입니다.

문제는 링크를 통해서 직접 봐주시길 바랍니다.

 

직사각형의 최대 넓이

철망의 전체 길이가 $40$일 때, 한 변의 길이가 $10$이 되면 최대 넓이가 $100$이 된다.

codeup.kr

 

 

 

주의해야 할 점

1. readline과 int나 float를 사용하는 입력 방식

readline을 사용해서 입력할 때는 맨 끝에 \n이 붙어서 입력됩니다.

하지만, 입력한 값을 int나 float으로 처리해 정수, 실수형으로 만들어 줄 때는 

굳이 \n을 떼기 위해 rstrip을 사용할 필요가 없습니다.

숫자 형태를 만들어줄 때 자동으로 사라집니다.

num = int(sys.stdin.readline())

 

2. 소수점 이하 버리기

이 문제에서는 직사각형의 실제 최대 넓이가 실수더라도 소수점 이하는 버리고 정수로 출력해야 합니다.

실수형의 값에서 소수점 이하를 버릴 때는 단순히 그 값에 int 내장 함수를 사용해

정수형으로 만들어 버리면 됩니다.

 

 

예제 설명

1. 첫 번째 예제

- 입력

40

 

- 출력

100

 

- 설명

입력한 철망의 길이는 40입니다.

직사각형의 가로, 세로 길이가 같을 때 최대 넓이를 가질 수 있으므로

철망의 길이 40으로 만들 수 있는 똑같은 가로, 세로의 길이는 10입니다.

이때의 넓이는 10 X 10 = 100이므로, 100이 최대 넓이입니다.

따라서 100을 출력합니다.

 

 

생각한 풀이 과정

철망의 길이 n을 입력하고, int형으로 변환합니다.

n = int(stdin.readline())

 

직사각형의 둘레의 길이인 철망의 길이가 주어졌을 때, 최대 넓이를 가지려면

가로와 세로의 길이가 같은 정사각형일 때 최대 넓이를 가집니다.

주어진 철망의 길이 n에 대하여 가로, 세로의 길이인 n/4를 구하고 넓이를 구합니다.

소수점 이하는 버려야 하므로, int형으로 만들어 정수로 만들어줍니다.

max_area = int((n / 4) ** 2)

 

최대 넓이인 max_area의 값을 출력합니다.

print(max_area)

 

 

제출한 파이썬 코드

# readline을 사용하기 위해 import합니다.
# int형으로 변환합니다.
from sys import stdin


# 철망의 길이 n을 입력합니다.
n = int(stdin.readline())
# 직사각형이 최대 넓이를 가지려면 가로와 세로의 길이가 같은 정사각형여야합니다.
# 따라서 가로, 세로의 길이를 구하고 가로와 세로 길이를 곱해 최대 넓이를 구합니다.
# int형으로 만들어 소수점 이하는 버리고 정수로 만들어줍니다.
max_area = int((n / 4) ** 2)

# 최대 넓이인 max_area의 값을 출력합니다.
print(max_area)

 

 

제출 결과

CodeUp 1296번 : 직사각형의 최대 넓이에서 코드 제출 결과
CodeUp 1296번 : 직사각형의 최대 넓이에서 코드 제출 결과

 

 

느낀 점

이런 종류의 문제는 사용하는 언어의 문법뿐만 아니라, 수학 실력도 가지고 있어야 무난히 풀 수 있습니다.

저는 확실히 이런 종류의 문제를 공부하는 것보다는 개발 쪽 공부를 하는 게 더 마음에 드네요.

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

※ 공감 버튼과 구독 버튼도 잊지 말고 꾹 눌러주시면 감사하겠습니다~👍👍

반응형

댓글