[http://acm.kaist.ac.kr/Problems/2005oa.pdf 문제 보기] ---- {{{~java import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Shopping { private static BufferedReader br; public static int processOneCase(int num) { String line = null; String [] contents; double [][] rates = new double[num][2]; for(int i = 0; i < num; i++) { try { line = br.readLine(); } catch (IOException e) { e.printStackTrace(); } contents = line.split(" "); int price = Integer.parseInt(contents[1]); int weight = Integer.parseInt(contents[0]); rates[i][0] = (double) price / weight; rates[i][1] = price; } double minRate = rates[0][0]; int minRateIndex = 0; for(int i = 1; i < num; i++) { if (rates[i][0] < minRate) { minRate = rates[i][0]; minRateIndex = i; } else if (rates[i][0] == minRate) { if (rates[i][1] < rates[minRateIndex][1]) { minRate = rates[i][0]; minRateIndex = i; } } } return (int) rates[minRateIndex][1]; } public static void main(String[] args) { br = null; try { br = new BufferedReader(new FileReader("test.txt")); String line = br.readLine(); int testCase = Integer.parseInt(line); for(int i = 0; i < testCase; i++) { line = br.readLine(); int result = processOneCase(Integer.parseInt(line)); System.out.println(result); } br.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }}} 시간 : 30m ---- 타이머를 켜놓고 시간을 우선시하다보니 역시 Refactoring을 하고 싶지 않았다. 요구사항을 읽고 감이 팍 오는 문제는 그냥 막 코딩하는 식이다. main에 확 집어 넣고 풀어도 그냥 풀린 문제를 굳이 메소드로 나누고 여러 군데에서 사용되는 변수를 필드화하는 것이 정말 귀찮았다. 하지만 그러한 방식으로 전환하고 습관화하는 능력을 키워야 겠다. ---- [프로그래밍]