본문 바로가기
알고리즘/SWEA

[SWEA / Flattern / JAVA]

by KDW999 2023. 5. 14.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh 

 

SW Expert Academy

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

swexpertacademy.com

 

문제 접근

최고점의 높이를 1감소시켜서 최저점의 높이를 1증가시켜줘야 한다.

그럼 최고점과 최저점의 높이를 알아야하는데 정렬로 해결했다.

dump의 숫자만큼 반복문을 돌면서 List의 첫 인덱스와 마지막 인덱스 수를 변경하고 이후 다시 List를 정렬한다.

반복문을 나오면 최고점의 최저점의 차이를 출력

 

++ 처음에 Input 값이 너무 긴 탓에 크기를 지정못해서 배열은 안되지 않을까란 생각에 List를 사용했는데, 배열의 크기도 

st.countToken()으로 토큰의 크기만큼 지정해주면 똑같은 방법으로 풀 수 있었을 것 같다.

 

++ 다른 사람의 풀이를 보니 높이의 갯수가 최대 100개라 배열의 크기를 100으로 잡고 시작했더라..

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException {
	   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	   
	   for(int t=1; t<=10; t++) {
		   int dump = Integer.parseInt(br.readLine()); // 덤프 횟수
		   List<Integer> list = new ArrayList<>();
		   StringTokenizer st = new StringTokenizer(br.readLine());
		   
		   while(st.countTokens() > 0) { // 현재 토큰 갯수, 값을 하나씩 저장할 때 마다 1감소
			   list.add(Integer.parseInt(st.nextToken()));
		   }
		   Collections.sort(list);
           
		   for(int i=0; i<dump; i++) {
			   
			   list.set(list.size()-1, list.get(list.size()-1)-1);
			   list.set(0, list.get(0)+1);
			   Collections.sort(list);
		   }
		   System.out.println("#"+t+ " " + (list.get(list.size()-1) - list.get(0)));
	   }
	}
}

 

 

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA / N-Queen / JAVA]  (0) 2023.05.16
[SWEA / 파리 퇴치 / JAVA]  (0) 2023.05.15
[SWEA / View / JAVA]  (0) 2023.05.11
[SWEA / 구구단 걷기 / JAVA]  (1) 2023.05.11
[SWEA / 원 안의 점 / JAVA]  (0) 2023.05.09

댓글