반응형
백준 2959번 문제 거북이
정렬 문제
https://www.acmicpc.net/problem/2959
문제 풀이
숫자를 사용할 순서에서
첫 번째 수와 세 번째 수,
두 번째 수와 네 번째 수가 직사각형의 서로 마주보는 변이 된다.
- 거북이가 직사각형을 못 만드는 경우는 언제일까?
1. 첫 번째 수보다 세 번째 수가 더 큰 경우
2. 두 번째 수보다 네 번째 수가 더 작은 경우
이렇게 두 가지다.
따라서 직사각형을 만들려면
1. 첫 번째 수 > 세 번째 수
2. 두 번째 수 < 네 번째 수
여야 한다.
- 주어진 수로 만들 수 있는 직사각형 넓이 최대는?
가장 큰 두 수를 마주보는 변으로 만들고
남은 두 수를 또다른 마주보는 두 변으로 만들면 된다.
마주보는 두 변에 사용된 두 수 중 더 작은 값이 직사각형의 한 변의 값이 되기 때문에
큰 값끼리 마주보게 해 최대한 길게 만들어야 한다.
그래서 입력받은 숫자들을 오름차순(비내림차순)으로 정렬하고,
크기가 가장 작은 숫자부터 가장 큰 숫자를 1 2 3 4라 하면
4 1 3 2 순으로 사용한다.
그리므로 이 직사각형의 넓이는 세 번째로 큰 수 x 가장 작은 수 이다.
해답 코드 Python
#백준 2959 거북이 sort
from sys import stdin
#입력
n = list(map(int, stdin.readline().split()))
#오름차순으로 정렬
n = sorted(n)
#넓이 구함. 마주보는 두 변 중 더 짧은 변이 직사각형의 한 변의 길이가 되므로 두 변의 길이는 n[0]과 n[2]
print(n[0] * n[2])
Comment
- sorted : 파이썬 내장 정렬 함수. 오름차순이 디폴트. 내림차순은 reverse=True 옵션 추가. 문자열 정렬도 가능
- 내림차순 정렬 예) n = sorted(n, reverse=True)
- sorted(map(...)) 로 처음부터 정렬해서 받을 수 있다!
- sort와의 차이점은? - sort는 list.sort()로 사용하는 리스트의 메서드.
- sys.exit() : 현재 실행중인 프로그램을 이 시점에서 종료해라
반응형
'DSA > Algorithm' 카테고리의 다른 글
[백준 1269] 대칭 차집합 Python Tree 트리 (0) | 2021.10.04 |
---|---|
[백준 16466] 콘서트 Python 우선순위 큐 Queue (0) | 2021.10.04 |
[백준 2720] 세탁소 사장 동혁 Python greedy 그리디 알고리즘 (0) | 2021.09.29 |
[백준 10162] 전자레인지 Python greedy 그리디 알고리즘 (0) | 2021.09.29 |
[백준 2231] 분해합 Python 완전탐색(브루트포스) (0) | 2021.09.26 |