백준(2810) - 컵홀더 Python

최대 1 분 소요

백준(2810) - 컵홀더

문제유형 : 그리디 알고리즘, 파이썬

해결방법

그리디 문제는 경우의 수를 잘 확인하는 것이 중요하다.

이 문제도 경우의 수로 나눠서 확인해야 한다.

  1. n 이 1이면 당연히 1이 출력된다.

  2. 좌석이 커플석이 없는 경우로만 이루어진다면 n을 출력하면된다.

  3. 좌석이 SLLLLSSLL 로 이루어져 있다면 컵 홀더는 *S*LL*LL*S*S*LL*가 위치해있다.

    컵 홀더의 위치에 맞게 *을 표기해두고 최종적으로 *의 개수를 출력하면 된다.

n = int(input())
seats = input()

if n == 1:
    print(1)

elif n == seats.count('S'):
    print(n)

else:
    res = ['*']
    count = 1
    for i in range(len(seats)):
        if seats[i] == 'S':
            res.append(seats[i])
            res.append('*')
        elif seats[i] == 'L' and count != 2:
            count += 1
            res.append(seats[i])
        elif seats[i] == 'L' and count == 2:
            count = 1
            res.append(seats[i])
            res.append('*')

    print(res.count('*'))

댓글남기기