백준 2810 컵홀더 JAVA

sundays·2023년 6월 8일
0

문제

컵홀더

풀이

컵홀더가 있는 위치는 각 글자수의 개수만큼 기본적으로 존재 하지만 L다음에 L이 같이 나오는 경우 이 숫자만큼 컵홀더를 설치 할 수가 없다

*S*LL*LL*S*S*LL*

LL이 쌍으로 나오는 개수가 몇개 인지 세고(위의 예제상 3개) 그 숫자를 가지고 전체 글자 수에서 이 숫자만큼 빼주면 된다. 하지만
만약 LL이 한개 이하인 경우에는 글자의 숫자만큼 리턴하며 컵홀더를 설치할 수 있다.
왜냐하면 S가 섞이기 때문에 어떤 인덱스는 L이 있는 방향이 아니라 다른 방향으로 설치를 해야 하기 때문이다. 다음과 같이

*LL*S*

이경우에는 문제가 되지 않지만 만약 L이 2개이상 섞이게 되면 S는 LL이 껴서 설치가 안되는 경우의 수가 있기 때문이다.

*LL*S*LL*

두개 이상 나오는 경우 무조건 설치를 못하는 경우의 수가 발생할 수 있다고 보면 된다.
그렇기 때문에 마지막 위치에는 필수적으로 아스테릭이 들어가야 한다. 그렇기 때문에 두개 이상 LL이 나오는 경우 +1 을 필수적으로 해주어야 한다

  1. LL의 개수를 구한다
int count = 0; // LL의 개수
for (int i = 0; i < n; i++) {
	if (s.charAt(i) == 'L') {
    	if (i + 1 > n) break;
        if (s.charAt(i) == 'L') {
        	count++;
            i += 1;
        }
    }
}
  1. LL이 존재 하지않는 곳에서는 글자수만큼 설치 할 수 있다
if (count <= 1) {
	System.out.println(s.length());
} else {
	System.out.println(s.length() - count + 1);
}

전체 코드

전체 코드

profile
develop life

0개의 댓글