코드굽는 타자기
SWEA[1952] - 수영장 본문
링크
SWEA[1952]
문제설명
- 완전탐색
문제풀이
- 완전탐색
문제코드
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Solution1952 {
public static int Ans=Integer.MAX_VALUE; // 1년 이용권
public static int Temp = 0;
public static int[] month_day = new int[13]; // (N%12+1) (1~12)
public static int[] price = new int[4];
public static void Search(int month) {
if(month>=13) {
Ans = Math.min(Ans, Temp);
return;
}
if(month_day[month]==0) {
Search(month+1);
}
else {
for (int i = 0; i < 3; i++) {
// 1일권, 1달권, 3달권 선택 시
switch (i) {
// 1일권 - 그 날 모든 날 다 사용한다. 1일권, 1달권 섞으면 무조건 손해
case 0:
Temp+=price[i]*month_day[month];
Search(month+1);
Temp-=price[i]*month_day[month];
break;
// 1달권
case 1:
Temp+=price[i];
Search(month+1);
Temp-=price[i];
break;
// 3달권
case 2:
Temp+=price[i];
Search(month+3);
Temp-=price[i];
break;
}
}
}
}
public static void main(String args[]) throws Exception
{
System.setIn(new FileInputStream("res/swea/1952.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int T;
T=Integer.parseInt(br.readLine());
for(int test_case = 1; test_case <= T; test_case++)
{
// 입력
st = new StringTokenizer(br.readLine());
for (int i = 0; i < 4; i++) {
price[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for (int i = 1; i <= 12; i++) {
month_day[i] = Integer.parseInt(st.nextToken());
}
Ans = price[3]; //1년 이용권
Search(1);
System.out.println("#"+test_case+" "+Ans);
// 초기화
Ans=Integer.MAX_VALUE;
}//test_case end
}//main end
}
아쉬운점
- 문제 이해를 제대로 못했음
- (12,1,2), (11,12,1) 이 아니라 그냥 12, 11에 사용 가능한 것일 뿐임
- 2020년 11월,12월 이지 2020년 11월,12월,1월은 말이안됨.
잘한점
- DFS
- 1일치랑 1달치 1달에 섞이면 무조건 손해임
- 1일치 쓰려면 무조건 1달치 전부 다 써야 함.
- 3달치 사용하면 Search(month+3) 함
'알고리즘 > 완전탐색' 카테고리의 다른 글
SWEA[1247] - 최적 경로 (0) | 2020.02.18 |
---|---|
SWEA[2806] - N-Queen[D3] (0) | 2020.02.18 |
SWEA[2383] - 점심 식사시간 (0) | 2020.02.18 |
Programmers[42840] - 모의고사[Level1] (0) | 2020.02.17 |
SWEA[1244] - 최대 상금[D3] (0) | 2020.02.09 |
Comments