• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

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

23.02.01 17:32 작성 23.02.01 17:33 수정 조회수 218

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

질문자

2023.02.04

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