본문 바로가기
PS/BOJ

백준 4351 자바 - Hay Points (BOJ 4351 JAVA)

by Nahwasa 2022. 2. 19.

문제 : boj4351

 

  String으로 되어 있는 문자열과, 해당 항목에 대한 int를 저장할 수 있어야 한다. HashMap을 사용하면 효율적으로 저장하고, 찾을 수 있다. m개의 단어와 숫자를 받아 HashMap에 단어를 key, 숫자를 value로 저장한다. 그리고 n개를 입력받으면서 띄어쓰기를 기준으로 나누어 HashMap에 해당 단어가 있다면 점수를 더해나가면 된다. 

 

코드 : github

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

public class Main {
    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int a = Integer.parseInt(st.nextToken());

        HashMap<String, Integer> hm = new HashMap<>();
        while (n-->0) {
            st = new StringTokenizer(br.readLine());
            hm.put(st.nextToken(), Integer.parseInt(st.nextToken()));
        }

        StringBuilder sb = new StringBuilder();
        while (a-->0) {
            int sum = 0;
            while (true) {
                String str = br.readLine();
                if (str.equals(".")) break;
                st = new StringTokenizer(str);
                while (st.hasMoreTokens()) {
                    String token = st.nextToken();
                    if (hm.containsKey(token))
                        sum += hm.get(token);
                }

            }
            sb.append(sum).append('\n');
        }
        System.out.print(sb);
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}

댓글