문제의 핵심은 입력으로는 들어올 글자 수를 숫자로 받고 이후 S와 LL로 이루어진 값을 받게 되는데, S의 경우에는 좌측에 컵홀더 하나를 추가할 수 있고, LL의 경우에는 좌우측에 컵홀더 하나를 추가할 수 있다.
여기서 컵홀더가 *LL**LL* 이런 식으로 두 개를 겹칠 수는 없으므로 해당 케이스만 제외해서 총 컵홀더의 갯수를 구해주면 되겠다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class CupHolder {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
String s = br.readLine();
int answer = 1;
for(int i = 0; i<count; i++) {
if(s.charAt(i) == 'S') {
answer++;
} else {
answer++;
i++;
}
}
if(answer > count) {
answer = count;
}
System.out.println(answer);
}
}
풀이 방법은 단순하게 접근해서 S나 LL이나 왼쪽에는 무조건 컵홀더가 추가되고, 결국 S와 LL을 합친 컵홀더 갯수는 좌석 총 좌석보다 많아질 수 없기 때문에 마지막 좌석만 확인해주면 되는데
마지막 좌석을 LL이라고 가정해서 answer에 1을 넣어 컵홀더 갯수를 세준 후, 컵홀더 갯수가 좌석 갯수보다 많아지면 최대값인 좌석 갯수로 변경해서 제출해주면 끝이다.
Leave a Reply