sm 기술 블로그
100. 2477(참외 밭) 본문
import sys
input = sys.stdin.readline
melon = int(input())
melonGround = [int(input().split()[1]) for _ in range(6)]
melonMaxIndex = melonGround.index(max(melonGround))
print((melonGround[melonMaxIndex-1]*melonGround[melonMaxIndex-2] +
melonGround[melonMaxIndex-4]*melonGround[melonMaxIndex-5])*melon)
문제요약
ㄱ 자 직사각형 넓이를 구하시오.
해설
고민을 많이 했다. ㄱ을 어떻게 넓이를 구할지 말이다.
처음에는 큰 직사각형을 만들고 잘라진 부분의 삼각형을 빼는 방식으로 생각했다.
일단 동서남북의 숫자는 다음과 같다
그 다음
빨간부분을 빼보자 했지만 구현을 어떻게 할지 모르겠어서 포기했다.
다시 다른방법으로 접근했는데 직사각형 두개를 구해서 더하면 되지 않을까 했다.
다음과 같이 빨간부분, 주황부분을 구해서 더하면 그것 또한 직사각형 넓이이다.
먼저 예제 입력을 기준으로 경우의 수를 준비했다.
(1)
7
4 50
2 160
3 30
1 60
3 20
1 100
(2)
7
1 100
4 50
2 160
3 30
1 60
3 20
(3)
7
3 20
1 100
4 50
2 160
3 30
1 60
(4)
7
1 60
3 20
1 100
4 50
2 160
3 30
(5)
7
3 30
1 60
3 20
1 100
4 50
2 160
(6)
7
2 160
3 30
1 60
3 20
1 100
4 50
총 6가지의 경우의 수가 나오며 이에 다 적합해야 문제를 올바르게 푼 것이다.
보면 가장 큰 수의 인덱스에서 -2 -1 을 곱한 값과 -4 -5 곱한 값을 더하면 직사각형 값을 구할 수 있었다.
melonMaxIndex = melonGround.index(max(melonGround))
print((melonGround[melonMaxIndex-1]*melonGround[melonMaxIndex-2] +
melonGround[melonMaxIndex-4]*melonGround[melonMaxIndex-5])*melon)
그래서 먼저 가장 큰 수의 인덱스 값을 구하고, 위에서 말한 식을 적용했다.
마지막에 1m^2 당 심을 수 있는 참외의 개수를 melon으로 곱해주었더니 문제를 해결 할 수 있었다.
'문제 > 백준_파이썬' 카테고리의 다른 글
102. 1002(터렛) (0) | 2022.06.22 |
---|---|
101. 택시 기하학(3053) (0) | 2022.06.22 |
99. 4153(직각삼각형) (0) | 2022.06.21 |
98. 3009(네 번째 점) (0) | 2022.06.21 |
97. 1085(직사각형에서 탈출) (0) | 2022.06.21 |
Comments