connecting the dots
[SWEA / Java] 1208 : Flatten 본문
문제
난이도 D4
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이
처음에는 상자가 max인 열과 min인 열번호를 각각 구해서 max인 곳에서 min인 곳으로 상자를 옮겨주는 걸 while문을 통해 100번 반복하려고 했다. 이후에 이렇게 하는 방법보다 정렬함수 Arrays.sort(arr)을 사용해 오름차순 정렬을 한번 해준다면 arr[0]에 있는 상자를 arr[99]로 옮겨주고 다시 정렬하며 반복하기만 하면 더욱 간단하게 구현할 수 있음을 알게 됐다.
코드
import java.util.Arrays;
import java.util.Scanner;
public class SW1208 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // tc 밖에 쓸 것
for(int tc = 1; tc <= 10; tc++) {
int N = sc.nextInt();
int result = 0;
int[] map = new int[100];
for(int i = 0; i < map.length; i++) {
map[i] = sc.nextInt();
}
//확인
//System.out.println(Arrays.toString(map));
while(true) {
Arrays.sort(map); //오름차순 정렬
if(map[99] - map[0] <= 1 || N == 0) {
result = map[99] - map[0];
break;
}
map[99]--;
map[0]++;
N--;
}
System.out.println("#" + tc + " " + result);
}
}
}
느낀점
- 이 문제는 테스트케이스가 10개로 정해져 있어서 아무 생각 없이 Scanner를 테스트케이스 안에 선언했다가 input 값이 제대로 안 들어왔다 .. 이유를 처음에 못찾아서 쓸데없는 시간을 낭비했다 ㅠㅠ
- 코드를 구현하기 전에 조금 더 효율적인 방안을 고민해보는 시간을 갖자 !
'algorithm > SWEA' 카테고리의 다른 글
[SWEA/Java] 1247 : 최적경로 (0) | 2021.02.18 |
---|---|
[SWEA/Java] 1974 : 스도쿠 검증 (0) | 2021.02.10 |
[SWEA / Java] 1861 : 정사각형 방 (0) | 2021.02.08 |
[SWEA / Java] 1210 : Ladder1 (0) | 2021.02.07 |
[삼성 기출/C++] 14501번 : 퇴사 (0) | 2020.12.20 |