삐까냥의 파도타기
1952. 수영장 본문
1952. [모의 SW 역량테스트] 수영장
https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpFQaAQMDFAUq
dfs없이 풀수 있게다 싶어서, 하드 코딩을 했는데,
결국 dfs로 풀었네요.
dfs로 풀때, where == 11인 경우를 생각하지 않아서,
라이브 코딩하며 코드만 정리했네요,
하나하나씩 찍어보며, 디버깅을 했고,
문제를 풀었습니다.
여러분 자신의 생각이 맞다고 판단했지만, 답이 틀렸을 때
로그나, 현재 상황을 찍어보세요.
(사실 코딩 테스트를 준비하며 로그나 출력을 계속 찍어보긴 했는데, 오늘은 귀차니즘으로 찍어보기 싫었어요.)
이렇게 코딩테스트용 디버깅 레벨이 상승했습니다.
(로그 찍어보기가 귀차니즘을 넘어서는 단계)
2018년 4월 15일 - 다듬지 않은 코드 (소요시간 1시간 3분) import java.util.Scanner; public class Q1952 { static int[] prices = new int[4], month = new int[12]; static int result;
public static void main(String[] args) { Scanner sc = new Scanner(System.in); int testCase = sc.nextInt();
for (int i = 1; i <= testCase; i++) { result = 0;
for (int j = 0; j < 4; j++) { prices[j] = sc.nextInt(); } //1일씩 계산 for (int j = 0; j < 12; j++) { month[j] = sc.nextInt() * prices[0]; }
//1달씩 계산 for (int j = 0; j < 12; j++) { if (prices[1] < month[j]) { month[j] = prices[1]; } }
//3달씩 계산 cal(0, 0);
System.out.println("#" + i + " " + result); } }
static void cal(int where, int tempResult) {
if (where < 10) { int tempValue = month[where] + month[where+1] + month[where+2]; if (prices[2] < tempValue) { // System.out.println(where + " -> " + (where+3)); cal(where+3, tempResult+prices[2]); } // System.out.println(where + " -> " + (where+1)); cal(where+1, tempResult+month[where]); return; } else if (where == 10) { int tempValue = month[10] + month[11]; if (prices[2] < tempValue) { tempResult += prices[2]; } else { tempResult += tempValue; } } else if (where == 11) { if (prices[2] < month[11]) { tempResult += prices[2]; } else { tempResult += month[11]; } } // System.out.println(where);
if (prices[3] < tempResult) { tempResult = prices[3]; }
if (result == 0 || result > tempResult) { result = tempResult; } } } |
'코딩 > SW Expert Academy' 카테고리의 다른 글
1953. 탈주범 검거 (0) | 2018.04.15 |
---|---|
2115. 벌꿀채취 (0) | 2018.04.14 |
2383. 점심 식사시간 (0) | 2018.04.13 |
2382. 미생물 격리 (0) | 2018.04.13 |
1949. 등산로 조성 (0) | 2018.04.13 |