[HackerRank] Super Reduced String

아르당·2023년 12월 16일
0

HackerRank

목록 보기
48/109
post-thumbnail

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

문제

소문자 알파벳 범위인 ascii['a'..'z']의 문자열을 일련의 작업을 통해 줄여라. 각 작업에서 일치하고 인접하는 문자를 선택하고 삭제해라.

이 방법으로 가능한 많은 문자를 삭제하고 결과를 문자열로 반환해라. 만약 최종 문자열이 비었다면 Empty String을 반환해라.

Example

s = 'aab'

'aab'는 인접한 문자 'a'를 삭제해서 'b'로 줄어든다.

s = 'abba'

두 개의 'b'를 삭제해서 'aa'가 남는다. 두 개의 'a'를 삭제하면 빈 문자열이 된다. 'Empty String'을 반환한다.

Function Description

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

  • String s: 줄여야 하는 문자열

Return

  • String: 줄인 문자열 또는 Empty String

Constraints

  • 1 <= lenght of s <= 100

풀이

문자를 순서대로 순회하면서 인접한 문자가 같은 문자인지 확인하면 된다. 그리고 따로 순회하면서 문자를 담아두어 제거하면서 진행한다.

결과를 담아둘 문자열을 생성한다.

StringBuilder result = new StringBuilder();

반복문을 사용해 문자를 비교하며 result에 담거나 삭제한다.

for(int i = 0; i < s.length(); i++){
	char now = s.charAt(i);

	if (result.length() > 0 && result.charAt(result.length() - 1) == now) {
		result.deleteCharAt(result.length() - 1);
	} else {
		result.append(now);
	}
}

마지막으로 result의 길이가 0이면 빈 문자열이기 때문에 Empty String을 반환하고 그렇지 않으면 result를 반환한다.

if(result.length() == 0){
	return "Empty String";
}else{
	return result.toString();
}

전체 코드

public static String superReducedString(String s) {
	StringBuilder result = new StringBuilder();

	for(int i = 0; i < s.length(); i++){
		char now = s.charAt(i);

		if (result.length() > 0 && result.charAt(result.length() - 1) == now) {
			result.deleteCharAt(result.length() - 1);
		} else {
			result.append(now);
		}
	}

	if(result.length() == 0){
		return "Empty String";
	}else{
		return result.toString();
	}
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글