• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

안녕하세요 런타임에러 뜨는 이유좀 알수 있을까요 ??

22.11.14 03:51 작성 조회수 457

0

import java.util.HashMap;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        HashMap<Character,Integer> map1 = new HashMap<>();
        String str1 = sc.next();
        String str2 = sc.next();
        String answer = "YES";

        for (char i : str1.toCharArray()){
            map1.put(i,map1.getOrDefault(i,0)+1);
        }
        for (char i : str2.toCharArray()){
            if (!map1.containsKey(i)|| map1.get(i)==0) {
                answer="NO";
            }
            map1.put(i,map1.get(i)-1);
        }
        System.out.println(answer);

    }
}

답변 1

답변을 작성해보세요.

0

안녕하세요^^

if (!map1.containsKey(i)|| map1.get(i)==0) {
                answer="NO";
            }

참이되면 answer에 "NO"를 넣고 break를 하셔야 합니다.

밑에서 map1.put(i,map1.get(i)-1);

하면 안됩니다. 즉 키가 없는데 그 키값을 뺀다는 것은 오류입니다.