티스토리 뷰

Problem Solving/SWEA

[SWEA 1208] Flatten C++/Java

유자애옹 2021. 7. 28. 15:21

 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

문제풀이

 

그림과 같이 노란색 상자들이 쌓여있다.

높은 곳의 상자를 낮은 곳에 옮기는 방식으로 최고점과 최저점의 간격을 줄이는 평탄화 작업을 하려고 한다.

제한된 작업 횟수 동안 평탄화 작업을 수행하고 최고점과 최저점의 차이를 구하는 문제다.

 

제1회 덤프 수행 이후 화면

가장 높은 곳에 있는 상자를 가장 낮은 곳으로 옮기는 작업을 덤프라고 한다.

1회 덤프 때 A에 있는 상자를 B부분에 덤프하였다.

 

제2회 덤프 수행 이후 화면

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
링크
«   2024/05   »
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
글 보관함