https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh
문제 접근
최고점의 높이를 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 |
댓글