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

gulang님의 프로필 이미지
gulang

작성한 질문수

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

1. 학급 회장(영상 후반 HashMap 추가설명)

1개의 테케에서 런타임오류가나는데 왜인지 모르겠습니다.

작성

·

281

·

수정됨

0

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

public class Main{
	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		String a = sc.next();
		String b = sc.next();
		HashMap<Character,Integer> map = new HashMap<>();
		String answer="YES";
		
		for(char x: a.toCharArray()) {
			map.put(x, map.getOrDefault(x,0)+1);
		}
		
		for(char x: b.toCharArray()) {
			if(!map.containsKey(x) || map.get(x) == 0) answer="NO";
			map.put(x, map.get(x)-1);
		}
		
		System.out.println(answer);
	}
}

4-2입니다. 현재 이 상태인데, 한개의 테케에서 런타임오류가 뜨는데 테케가 뭔지 볼수가 없어 왜인지 원인을 못찾겠습니다. 도와주세요

답변 1

1

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

!map.containsKey(x)

위에 코드가 참이 되면 x키가 없다는 것이므로 바로 return "NO"를 해서 함수를 종료해야 합니다.

종료하지 않고 map.put(x, map.get(x)-1);

코드를 진행하면 x키가 없기 때문에 map.get(x)값은 null값입니다. null에서 -1를 하면 에러가 납니다.

 

gulang님의 프로필 이미지
gulang
질문자

아 거기서 문제였군요 감사합니다!

gulang님의 프로필 이미지
gulang

작성한 질문수

질문하기