의자카운트랑 마지막의자인덱스 저장해두고,의자카운트가 2배수면 정답에 인덱스-마지막의자인덱스 추가
정답
class Solution {
fun numberOfWays(corridor: String): Int {
val MOD = 1000000007
val SEAT = 'S'
val PLANT = 'P'
var seatCount = 0
var ans = 1L
var lastSeatIndex = -1
for ((index, ch) in corridor.withIndex()) {
if (ch == SEAT) {
seatCount++
if (seatCount > 1 && seatCount % 2 != 0) {
ans = (ans * (index - lastSeatIndex)) % MOD
}
lastSeatIndex = index
}
}
return if (seatCount < 2 || seatCount % 2 != 0) 0 else maxOf(ans % MOD , 1L).toInt()
}
}
'알고리즘' 카테고리의 다른 글
릿코드 1611. Minimum One Bit Operations to Make Integers Zero 코틀린 (0) | 2023.11.30 |
---|---|
릿코드 191. Number of 1 Bits 코틀린 (1) | 2023.11.29 |
릿코드 935. Knight Dialer 코틀린 (1) | 2023.11.27 |
릿코드 1727. Largest Submatrix With Rearrangements 코틀린 (1) | 2023.11.26 |
릿코드 1685. Sum of Absolute Differences in a Sorted Array 코틀린 (1) | 2023.11.25 |