Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

도누쓰코딩죽이기

SWEA[6900] - 주혁이의 복권당첨 본문

알고리즘

SWEA[6900] - 주혁이의 복권당첨

차도누 2020. 2. 20. 10:30

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWh4FhG6Ei4DFAXp&categoryId=AWh4FhG6Ei4DFAXp&categoryType=CODE

 

SW Expert Academy

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

swexpertacademy.com

 

문제 정리

  1. 복권을 M장 구매
  2. 복권은 8자리로 구성
  3. '*' 은 와일드 카드
  4. 당첨 번호는 여러 복권이 당첨되지 않음!

전체 코드

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