티스토리 뷰
문제풀이
그림과 같이 노란색 상자들이 쌓여있다.
높은 곳의 상자를 낮은 곳에 옮기는 방식으로 최고점과 최저점의 간격을 줄이는 평탄화 작업을 하려고 한다.
제한된 작업 횟수 동안 평탄화 작업을 수행하고 최고점과 최저점의 차이를 구하는 문제다.
가장 높은 곳에 있는 상자를 가장 낮은 곳으로 옮기는 작업을 덤프라고 한다.
1회 덤프 때 A에 있는 상자를 B부분에 덤프하였다.
2회 덤프 수행 시에는 A에 있는 상자를 C부분에 덤프하였다.
덤프 횟수가 2회로 제한되어 있다면 정답은 6이 된다.
주어진 덤프 횟수 이내에 평탄화과 완료되면 덤프 작업을 멈추고 최고점과 최저점의 높이 차를 출력한다.
코드
C++ 코드
- minmax_element() 함수로 최고점과 최저점을 찾아서 덤프 수행
- minmax_element()의 first가 min값, second가 max값이다
Java 코드
- Arrays.sort()로 배열을 정렬한 후에 가장 큰 값인 box[99]에서 가장 작은 값인 box[0]으로 덤프 수행
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA 1220] Magnetic C++/Java (0) | 2021.07.28 |
---|---|
[SWEA 1210] Ladder1 C++/Java (0) | 2021.07.28 |
[SWEA 1209] Sum C++/Java (0) | 2021.07.28 |
[SWEA 1206] View C++/Java (0) | 2021.07.28 |
[SWEA 1204] 최빈수 구하기 C++/Java (0) | 2021.07.28 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 큐
- C++
- 프로그래머스
- 분할 정복
- algorithm
- 백준
- 스택
- BFS
- Two Pointer
- 정렬
- Kotlin
- 트리
- 그래프
- 재귀
- SW Expert Academy
- 두 포인터
- Java
- 브루트포스
- 자바
- 배열
- 투 포인터
- programmers
- 위상 정렬
- 이분 탐색
- 구현
- 문자열
- 알고리즘
- dfs
- SWEA
- BOJ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함