도누쓰코딩죽이기
SWEA[6900] - 주혁이의 복권당첨 본문
문제 정리
- 복권을 M장 구매
- 복권은 8자리로 구성
- '*' 은 와일드 카드
- 당첨 번호는 여러 복권이 당첨되지 않음!
전체 코드
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class D3_6900_주혁이의복권당첨 {
public static void main(String[] args) throws Exception {
//System.setIn(new FileInputStream("res/swea/d3/6900.txt"));
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(in.readLine());
for (int tc = 1; tc <= T; tc++) {
StringTokenizer st = new StringTokenizer(in.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int sum = 0;
String[] lotto = new String[N];
int[] reward = new int[N];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(in.readLine());
lotto[i] = st.nextToken();
reward[i] = Integer.parseInt(st.nextToken());
}
for (int i = 0; i < M; i++) {
String temp = in.readLine(); // 로또 당첨번호
int cnt = 0;
int cur = 0;
for (int j = 0; j < N; j++) { // 로또번호 가져오기
String lo = lotto[j];
if (check(lo, temp)) {
cnt++;
cur = j;
}
}
if (cnt == 1) {
sum += reward[cur];
}
}
System.out.println("#" + tc + " " + sum);
}
}
private static boolean check(String lo, String temp) {
for (int i = 0; i < 8; i++) {
if (lo.charAt(i) == '*') {
continue;
} else if (lo.charAt(i) != temp.charAt(i)) {
return false;
}
}
return true;
}
}
느낀점
check()
함수를 따로 만들어 빼니 생각 정리가 훨씬 수월했다.
크게 어렵지 않았던 것 같다.
이 문제와는 별개로 DFS문제 많이 풀어보자!!!!!!!
'알고리즘' 카테고리의 다른 글
정올[1082] - 화염에서 탈출 (2) | 2020.02.19 |
---|