Development Palette

[D3]n1208_flatten 본문

Algorithm/SWEA

[D3]n1208_flatten

징주 2021. 8. 4. 04:16

https://swexpertacademy.com/main/talk/solvingClub/problemView.do?contestProbId=AV139KOaABgCFAYh&solveclubId=AXqjxFI6_SQDFATi&problemBoxTitle=08%EC%9B%9403%EC%9D%BC&problemBoxCnt=2&probBoxId=AXsJfggai1EDFARX

덤프를 하고 제일 마지막에 최대 최소 값을 구해주는 걸 잊고,,, 

최대최소값을 먼저 구한다음 덤프를 한 값에서 최대 최소를 빼서 6번케이스에서만 틀렸었다

항상 순서가 중요!! 문제를 잘 읽어보고 흐름을 파악하자!

 

max min을 구하는 메소드로 실행하니 수행속도가 더 빨라졌고 코드가 더 깔끔해졌다

package w0803.com.ssafy.n1208_flatten;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Solution {

	public static int max(int box []) {
		int max = -999;
		int indexMax= -1;
		
		for (int x = 0; x < box.length; x++) {
				int tmpX = box[x];
				if(max<tmpX) {
					max = tmpX;
					indexMax = x;
				}
				if(max==100) break;
		}
		return indexMax;
	}
	
	public static int min(int box []) {
		int min = 999;
		int indexMin= -1;
		
		for (int x = 0; x < box.length; x++) {
			int tmpN = box[x];
			if(min>tmpN) {
				min = tmpN;
				indexMin = x;
			}
			if(min==1) break;
		}
		return indexMin;
	}
	
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		System.setIn(new FileInputStream("C:\\SSAFY_c_drive\\workspace\\03_algowork\\DailyProject\\src\\w0803\\com\\ssafy\\n1208_flatten\\input.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		final int T = 10;
		final int BOXCOUNT = 100;
		
		for (int t = 0; t < T; t++) {
			int dump_c = Integer.parseInt(br.readLine()); 	// 덤프 횟수 1~1000
			int box[] = new int[BOXCOUNT];					// 높이 1~100(행) //index : 가로로 몇번째 위치인지-가로길이 항상 100(열)
			StringTokenizer st = new StringTokenizer(br.readLine(), " ");

			for (int i = 0; i < BOXCOUNT; i++) { // 가로 박스
				box[i] = Integer.parseInt(st.nextToken());
			}
			
			//덤프시작
			for (int dump = 0; dump < dump_c; dump++) {
				//최대, 최소값 찾아서 덤프
				box[max(box)]--;
				box[min(box)]++;
			}
			//마지막에 최대 최소 다시구해서 최종값 출력
			bw.append("#"+(t+1)+" "+(box[max(box)]-box[min(box)])+"\n");
		}
		bw.flush();
		bw.close();
	}
}

'Algorithm > SWEA' 카테고리의 다른 글

[D3] 원재의 메모리 복구하기  (0) 2021.08.04
[D4] n1210 Ladder1  (0) 2021.08.04
[D2]n2001_파리퇴치  (0) 2021.08.04
[D3]n2805 농작물 수확하기  (0) 2021.08.04
[D2]n1954_달팽이숫자  (0) 2021.08.04
Comments