[伯俊]1620:ポケモンマスターの李多順です(JAVA/ジャワ)


質問する


BOJ 1620:私はポケモンマスター李多順-https://www.acmicpc.net/problem/1620

に答える


入力したポケモン情報を保存し、数字を入力した場合、該当するポケモン名を入力し、文字を入力して該当するポケモン名を出力します.
文字も数字も答えを出すため、Integer->StringとString->Integerのマッピングをそれぞれ実現する2つのHashMapが作成されました.
入力した文字列が数字の場合はIntegerをキーとしたMapから取り出し、文字の場合はStringをキーとしたMapから取り出せばよい!

コード#コード#

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] inputs = br.readLine().split(" ");
        int n = Integer.parseInt(inputs[0]);
        int m = Integer.parseInt(inputs[1]);

        HashMap<Integer, String> map_int = new HashMap<>();
        HashMap<String, Integer> map_str = new HashMap<>();
        for (int i = 1; i <= n; i++) {
            String name = br.readLine();
            map_int.put(i, name);
            map_str.put(name, i);
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= m; i++) {
            String tmp = br.readLine();
            if(isNum(tmp)){
                sb.append(map_int.get(Integer.parseInt(tmp))+"\n");
            }else{
                sb.append(map_str.get(tmp)+"\n");
            }
        }

        System.out.println(sb);
    }

    public static boolean isNum(String str) {
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isDigit(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }
}

整理する


✔ 알고리즘 분류 - 자료 구조, 해시를 사용한 집합과 맵
✔ 난이도 - ⚪ Silver 4

🤦今日のメッセージ


久しぶりにきれいに通過した問題
  • で入力された文字列が数値のコードであるかどうかを認識することに注意してください.
  • public static boolean isNum(String str) {
        for (int i = 0; i < str.length(); i++) {
            if (!Character.isDigit(str.charAt(i))) {
                return false;
            }
        }
        return true;
    }

    コメントサイト


    いいえ