인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

윤다정님의 프로필 이미지
윤다정

작성한 질문수

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

2. 아나그램(HashMap)

강사님 코드 런타임에러문제

작성

·

314

0

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

public class Main {
	public String solution(String str, String str2) {
		String answer = "YES";
		HashMap<Character, Integer> map = new HashMap<>();
		for(char x : str.toCharArray()) {
			map.put(x, map.getOrDefault(x, 0)+1);
		}
		for(char x : str2.toCharArray()) {
			if(map.get(x)==0 || !map.containsKey(x)) { // 부정처리 중요
				return "NO";
			}
			map.put(x, map.get(x)-1);
		}
		return answer;
	}
	public static void main(String[] args) {
		Main T = new Main();
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		String str2 = sc.next();
		System.out.println(T.solution(str, str2));
		sc.close();
	}

}

강사님 코드랑 똑같이 채점사이트에 넣는데 런타임에러가 납니다. 왜그럴까요?

 

답변 1

0

안녕하세요 .
강사님은 아니지만 답변드립니다.
if(map.get(x)==0 || !map.containsKey(x))

조건을 비교할때 map.get(x)을 첫번째로 하셨기때문에 str2에 없는값을 첫번째로 비교 후 or연산자가 작동합니다.
그렇기때문에 NullPointerException 에러가 발생합니다.
저도 같은 문제로 오류를 해결하며 답변드립니다.
감사합니다.

윤다정님의 프로필 이미지
윤다정

작성한 질문수

질문하기