[SW1952] 수영장

 SW Expert Academy - 수영장 

문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpFQaAQMDFAUq&categoryId=AV5PpFQaAQMDFAUq&categoryType=CODE&problemTitle=sw&orderBy=PASS_RATE&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1&&&&&&&&& 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

문제 풀이

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


public class Solution {
	static int ans, T;
	static int[] pays, days;

	static StringBuilder sb = new StringBuilder();


	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		T = Integer.parseInt(br.readLine());
		for (int t = 1; t <= T; t++) {
			// 초기화
			ans = Integer.MAX_VALUE;
			pays = new int[4];
			days = new int[13]; // 0 dummy

			StringTokenizer st = new StringTokenizer(br.readLine());
			for (int i = 0; i < 4; i++) pays[i] = Integer.parseInt(st.nextToken());

			st = new StringTokenizer(br.readLine());
			for (int i = 1; i <= 12; i++) days[i] = Integer.parseInt(st.nextToken());

			dfs(1, 0);

			sb.append("#").append(t).append(" ").append(ans).append("\n");

		}

		System.out.println(sb.toString());
	} // end main


	private static void dfs(int dep, int sum) {
		// 기저 조건
		if (dep > 12) {
			// complete code
			ans = Math.min(ans, sum);
			return;
		}

		dfs(dep + 1, sum + pays[0] * days[dep]);
		dfs(dep + 1, sum + pays[1]);
		dfs(dep + 3, sum + pays[2]);
		dfs(dep + 12, sum + pays[3]);
	} // end dfs

}
  • 완전 탐색을 해야하기 때문에 dfs 를 이용합니다.
  • 3달, 1년은 3칸씩 12칸씩 뛰어넘어야합니다.

 

 

 

 

 

 

 

 

 

# SWEA 수영장 # sw 수영장 java


 

728x90

'✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > SW Expert Academy' 카테고리의 다른 글

[SW5658] 보물상자 비밀번호  (0) 2022.09.27
[SW2115] 벌꿀 채취  (0) 2022.09.27
[SW1953] 탈주범 검거  (0) 2022.09.15
[SW1238] Contact  (0) 2022.09.12
[SW9299] 한빈이와 Spot Mart  (0) 2022.08.08