[java] sw expert academy - 수영장

최대 1 분 소요

업데이트:

문제

SWEA - 수영장
1년에 해당하는 이용계획을 계산하여 가장 적은 요금으로 수영장을 이용하는 방법을 찾는 문제.
요금제는 1일, 1달, 3개월(연속), 1년으로 구성되어 있음.

풀이

dfs를 이용해서 1월 부터 시작함.
우선 1년 요금제를 answer에 저장하고 값이 적으면 갱신해주는 방식으로 진행했다.
1월부터 (1일 요금계산/1달 이용계산/3개월 이용계산) 후, 2월, 3월 … 이렇게 12월로 가며 answer보다 가격이 크면 종료한다.
그리고 12월을 넘어가는 경우에 가격 비교 후 answer를 갱신하는 방법으로 이어나갔다.
3개월인 경우, 1월이면 1+3을 해서 4월로 점프함

소스코드(일부)

private static void dfs(int idx, int sum) {
		// TODO Auto-generated method stub
		if (idx >= 12) {
			ans = Math.min(ans, sum);
			return;
		}
		if (sum > ans) {
			return;
		}
		if(days[idx]!=0) {
			
		dfs(idx + 1, sum + days[idx] * price[0]); //일일권
		dfs(idx + 1, sum + price[1]); // 월별
		dfs(idx + 3, sum + price[2]); //3개월
		}
		else {
			dfs(idx+1,sum);
		}
	}

댓글남기기