[HackerRank] Beautiful Binary String

아르당·2024년 2월 25일
0

HackerRank

목록 보기
70/109
post-thumbnail

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

Problem

앨리스는 이진 문자열을 가지고 있다. 그녀는 이진 문자열이 만약 부분 문자열 "010"을 포함하고 있지 않다면 아름답다고 생각한다.
한 번의 단계에서 앨리스는 0을 1로 변경하거나 그 반대로 변경할 수 있다. 앨리스가 문자열을 아름다운 것으로 보기 위해 필요한 최소 단계 수를 계산하고 출력해라.

Example

b = 010

그녀는 어떤 요소든 하나만 변경하면 아름다운 문자열을 만들 수 있다.

Function Description

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

  • String b: 이진 숫자의 문자열

Returns

  • int: 필요한 최소 이동 횟수

Constraints

  • 1 <= n <= 100
  • b[i] ∈ {0, 1}

Solved

문자열을 잘라내서 잘려진 횟수를 구하는 방법으로 문제를 해결했다. 문제의 의도와 조금 다를 수 있다.

먼저 문자를 자를 횟수를 할당할 count를 선언하고 0을 할당한다.

int count = 0;

그리고 while문을 사용해서 매개변수 b에 010이 포함이 안될때까지 반복한다. while문 안에 beginIndex를 선언하고 010이 시작하는 인덱스를 할당한다. substring을 이용해서 010포함한 인덱스까지 잘라준고 count를 증가시킨다.

while(b.indexOf("010") != -1){
	int beginIndex = b.indexOf("010");
	b = b.substring(beginIndex + 3);
	count++;
}

마지막으로 count를 반환한다.

return count;

All Code

public static int beautifulBinaryString(String b) {
	int count = 0;

	while(b.indexOf("010") != -1){
		int beginIndex = b.indexOf("010");
		b = b.substring(beginIndex + 3);
		
        count++;
	}

	return count;
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글