[HackerRank] Game of Thrones - I

아르당·2024년 4월 17일

HackerRank

목록 보기
77/109
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

Dothraki는 왕 로버트의 왕좌를 빼앗기 위해 공격을 계획 중이다. 로버트 왕은 레이븐으로부터 이 음모를 들었고 적들이 왕국으로 침입할 수 있는 유일한 문을 잠그기로 계획한다. 하지만 문을 잠그기 위해 팰린드롬의 애너그램인 열쇠가 필요하다. 그는 팰린드롬이 재배열될 수 있는지 확인하기 위해 그의 문자열 상자를 살펴보기 시작했다. 문자열이 주어지고, 팰린드롬으로 재배열할 수 있는지 결정해라.

Example

s = "aabbccdd"

팰린드롬으로 배열하는 한 가지 방법은 abcddcba이다. YES를 반환한다.

Function Description

gameOfThrones 함수를 완성해라.
gameOfThrones 함수는 아래와 같은 매개변수를 가지고 있다.

  • String s: 해석해야할 문자열

Returns

  • String: YES 또는 NO

Constraints

  • 1 <= |s| <= 10^5
  • s는 오직 ascii[a...z] 범위 안의 소문자만 포함한다.

All Code

예제인 경우에는 쉽게 해결했지만 Hidden Test Case는 해결하기 어려웠다. 히든 테스트 케이스를 열어서 인자값을 커스텀 인풋에 넣으니 50Kb를 넘을 수 없다고 하였고, 메소드를 분리해서 해결하려고 하니 Runtime Error가 발생했다. 원인은 메모리 초과라고 생각이 든다.

public static String gameOfThrones(String s) {

	Map<Character, Integer> charCount = new HashMap<>();
        
	for (char c : s.toCharArray()) {
		charCount.put(c, charCount.getOrDefault(c, 0) + 1);
	}

	int oddCount = 0;

	for (int count : charCount.values()) {
		if (count % 2 != 0) {
			oddCount++;
		}
	}

	if (oddCount <= 1) {
		return "YES";
	} else {
		return "NO";
	}
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글