인프런 커뮤니티 질문&답변

qheogus55님의 프로필 이미지
qheogus55

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

2. 아나그램(HashMap)

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

작성

·

525

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);

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

 

 

 

qheogus55님의 프로필 이미지
qheogus55

작성한 질문수

질문하기