https://www.acmicpc.net/problem/1213
๐ ๋ฌธ์
๋นจ๊ฐ์ ๋ณผ๊ณผ ํ๋์ ๋ณผ์ด <๊ทธ๋ฆผ 1>์์ ๋ณด์ธ ๊ฒ์ฒ๋ผ ์ผ์ง์ ์์ ์์ฌ ๋์ฌ ์์ ๋, ๋ณผ์ ์ฎ๊ฒจ์ ๊ฐ์ ์ ๋ณผ๋ผ๋ฆฌ ์ธ์ ํ๊ฒ ๋์ด๋๋ก ํ๋ ค๊ณ ํ๋ค. ๋ณผ์ ์ฎ๊ธฐ๋ ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฐ๋ก ์์ ๋ค๋ฅธ ์๊น์ ๋ณผ์ด ์์ผ๋ฉด ๊ทธ ๋ณผ์ ๋ชจ๋ ๋ฐ์ด ๋์ด ์ฎ๊ธธ ์ ์๋ค. ์ฆ, ๋นจ๊ฐ์ ๋ณผ์ ์์ ์๋ ํ๋์ ๋ณผ ๋ฌด๋๊ธฐ๋ฅผ ํ ๋ฒ์ ๋ฐ์ด ๋์ด ์ฎ๊ธธ ์ ์๋ค. ์ ์ฌํ๊ฒ, ํ๋์ ๋ณผ์ ์์ ์๋ ๋นจ๊ฐ์ ๋ณผ ๋ฌด๋๊ธฐ๋ฅผ ํ ๋ฒ์ ๋ฐ์ด ๋์ด ์ฎ๊ธธ ์ ์๋ค.
- ์ฎ๊ธธ ์ ์๋ ๋ณผ์ ์๊น์ ํ ๊ฐ์ง์ด๋ค. ์ฆ, ๋นจ๊ฐ์ ๋ณผ์ ์ฒ์์ ์ฎ๊ฒผ์ผ๋ฉด ๋ค์์๋ ๋นจ๊ฐ์ ๋ณผ๋ง ์ฎ๊ธธ ์ ์๋ค. ์ ์ฌํ๊ฒ, ํ๋์ ๋ณผ์ ์ฒ์์ ์ฎ๊ฒผ์ผ๋ฉด ๋ค์์๋ ํ๋์ ๋ณผ๋ง ์ฎ๊ธธ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ์ฒ์์ ๋ณผ์ด <๊ทธ๋ฆผ 1>์์ ๋ณด์ธ ๊ฒ์ฒ๋ผ ์์ ๋, ๋นจ๊ฐ ๋ณผ์ <๊ทธ๋ฆผ 2>์์ ๋ณด์ธ ๊ฒ์ฒ๋ผ ์ฎ๊ธด ํ, <๊ทธ๋ฆผ 3>์์ ๋ณด์ธ ๊ฒ์ฒ๋ผ ์ฎ๊ธด๋ค๋ฉด ๋ ๋ฒ ๋ง์ ๊ฐ์ ์๋ผ๋ฆฌ ๋ชจ์ ์ ์๋ค.
๋ฐ๋ฉด์ ํ๋์ ๋ณผ์ ์ ํํ์ฌ ์์ ๋ณด์ธ ๊ฒ์ฒ๋ผ ์ฎ๊ธฐ๋ฉด(ํ์ดํ์ ์๋ ์๋ ์ฎ๊ธฐ๋ ์์๋ฅผ ๋ํ๋ธ๋ค) ๋ค ๋ฒ์ ์ฎ๊ฒจ์ผ ๊ฐ์ ์์ ๋ณผ๋ผ๋ฆฌ ๋ชจ์ ์ ์๋ค.
์ผ์ง์ ์์ ๋์ฌ ์๋ ๋ณผ์ ๊ดํ ์ ๋ณด๊ฐ ์ฃผ์ด์ง ๋, ๊ท์น์ ๋ฐ๋ผ ๋ณผ์ ์ด๋ํ์ฌ ๊ฐ์ ์๋ผ๋ฆฌ ๋ชจ์ผ๋ ์ต์ ์ด๋ํ์๋ฅผ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐ ์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์๋ ๋ณผ์ ์ด ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 500,000) ๋ค์ ์ค์๋ ๋ณผ์ ์๊น์ ๋ํ๋ด๋ ๋ฌธ์ R(๋นจ๊ฐ์ ๋ณผ) ๋๋ B(ํ๋์ ๋ณผ)๊ฐ ๊ณต๋ฐฑ ์์ด ์ฃผ์ด์ง๋ค. ๋ฌธ์์ด์๋ R ๋๋ B ์ค ํ ์ข ๋ฅ๋ง ์ฃผ์ด์ง ์๋ ์์ผ๋ฉฐ, ์ด ๊ฒฝ์ฐ ๋ต์ 0์ด ๋๋ค.
๐ ์ถ๋ ฅ
์ต์ ์ด๋ํ์๋ฅผ ์ถ๋ ฅํ๋ค.
๐ ํ์ด ๋ฐฉ์
๋ณผ์ ์ฎ๊ฒจ์ ๊ฐ์ ์ ๋ณผ๋ผ๋ฆฌ ์ธ์ ํ๊ฒ ๋์ด๋๋ก ํด์ผ ํฉ๋๋ค.
๊ฐ์ ์ ๋ณผ๋ผ๋ฆฌ ์ธ์ ํ๊ฒ ๋๊ธฐ๋ง ํ๋ฉด ๋๊ธฐ ๋๋ฌธ์
1. ๋ณผ์ ์์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ
2. ๋ณผ์ ๋ค๋ก ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ
์ด ๋ ๊ฐ์ง์ ๊ฒฝ์ฐ๋ก ์ฎ๊ธธ ์ ์๋๋ฐ์.
<- ์์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ผ์ชฝ
-> ๋ค๋ก ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์
๋ณผ์ ์๊ณผ ์ธ์ ๋์ด ์๋ ๊ฐ์๋งํผ์ ์ฎ๊ธฐ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์
์ฎ๊ธฐ์ง ์๋ ๊ฐ์๋ฅผ ์ด ๊ฐ์์์ ๋นผ์ฃผ๊ณ ์ด๋ค ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ์ ์ ๋ณผ์ ์ฎ๊ธฐ๋ฉด ๋๋์ง ๊ณ์ฐํด์ฃผ๋ฉด ๋ฉ๋๋ค !!
์ ๋ฆฌํด๋ณด์๋ฉด ์ด 8๊ฐ์ง์ ๊ฒฝ์ฐ๋ฅผ ๊ณ์ฐ ํ ๊ฐ์ฅ ์ ๊ฒ ์ฎ๊ธฐ๋ฉด ๋๋ ๋ณผ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ฉด ๋ฉ๋๋ค.
[๋ณผ์ ์์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ]
๊ฐ์ฅ ์ผ์ชฝ ๋ณผ์ด ํ๋์์ผ ๋
1. ์ด ํ๋์ ๋ณผ - ๋งจ ์ผ์ชฝ์ ์ธ์ ํด ์๋ ํ๋์ ๋ณผ์ ๊ฐ์
2. ์ด ๋นจ๊ฐ์ ๋ณผ
๊ฐ์ฅ ์ผ์ชฝ ๋ณผ์ด ๋นจ๊ฐ์์ผ ๋
3. ์ด ํ๋์ ๋ณผ
4. ์ด ๋นจ๊ฐ์ ๋ณผ - ๊ฐ์ฅ ์ผ์ชฝ์ ์ธ์ ํด ์๋ ๋นจ๊ฐ์ ๋ณผ์ ๊ฐ์
[๋ณผ์ ๋ค๋ก ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ]
๊ฐ์ฅ ์ค๋ฅธ์ชฝ ๋ณผ์ด ํ๋์์ผ ๋
5. ์ด ํ๋์ ๋ณผ - ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์ธ์ ํด ์๋ ํ๋์ ๋ณผ์ ๊ฐ์
6. ์ด ๋นจ๊ฐ์ ๋ณผ
๊ฐ์ฅ ์ค๋ฅธ์ชฝ ๋ณผ์ด ๋นจ๊ฐ์์ผ ๋
7. ์ด ํ๋์ ๋ณผ
8. ์ด ๋นจ๊ฐ์ ๋ณผ - ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์ธ์ ํด ์๋ ๋นจ๊ฐ์ ๋ณผ์ ๊ฐ์
์ด๋ ๊ฒ ํ๋ฉด ๋๊ฒ ๋ค๋ผ๊ณ ์๊ฐํ๋๋ฐ, ๊ทธ๋ฅ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ ํ๋ค๋ณด๋ ์ ๋ต์ ๋ง์์ง๋ง ์๊ฐ์ด 244 ms ๊ฐ ๋์ค๋๋ผ๊ตฌ์ ,,
๊ทธ๋์ ์ด๋ป๊ฒํ๋ฉด ์๊ฐ๊ณผ ์ฝ๋๊ธธ์ด๋ฅผ ์ค์ผ ์ ์์๊น ์๊ฐํ๋ค๊ฐ
count ์ find ๊ทธ๋ฆฌ๊ณ min ์ ์ฌ์ฉํ๋ฉด ๋๊ฒ ๋ค๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
count ๋ฅผ ํตํด ์ด B ์ R ์ ๊ฐ์๋ฅผ ์ธ์ฃผ๊ณ ,
find, rfind ๋ฅผ ํตํด ์ธ์ ํ ๋ณผ์ ๊ฐ์๋ฅผ ์ธ์ค๋๋ค. (๋งจ ์์ ๋ณผ์ด B ๋ผ๋ฉด R ์ด ๊ฐ์ฅ ์ฒ์ ๋์ค๋ ์์น๋ฅผ ๊ณ์ฐํด์ ์ธ์ ํด ์๋ B ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ๋ฐฉ์)
๊ทธ๋ฆฌ๊ณ min ์ ํตํด ๊ฐ์ฅ ์ต์ ์ด๋ํ์๋ฅผ ๊ตฌํด์คฌ์ต๋๋ค :)
๊ฒฐ๊ณผ๋ฅผ 224ms -> 40 ms ๋ก ์ค์ด๊ณ , ์ฝ๋๋ ํจ์ฌ ๊นจ๋ํด์ก์ต๋๋ค !!!
๐ ์ฝ๋
N = int(input())
ball = input()
# ์ด B ์ R ์ ๊ฐ์๋ฅผ ์ธ์ค๋ค.
blue = ball.count('B')
red = ball.count('R')
# ๋งจ ์์ ์ธ์ ํ ๋ณผ์ ๊ฐ์๋ฅผ ์ธ์
# ์ด ๊ฐ์์์ ๋นผ์ฃผ๊ณ ์ด๋ค ๊ฐ์ด ๋ ์์์ง ์ ์ฅํด์ค๋ค.
first = ball[0]
red_minus = ball.find('B') if first == 'R' else 0
blue_minus = ball.find('R') if first == 'B' else 0
first_result = min(blue - blue_minus, red - red_minus)
# ๋งจ ๋ค์ ์ธ์ ํ ๋ณผ์ ๊ฐ์๋ฅผ ์ธ์
# ์ด ๊ฐ์์์ ๋นผ์ฃผ๊ณ ์ด๋ค ๊ฐ์ด ๋ ์์์ง ์ ์ฅํด์ค๋ค.
last = ball[-1]
red_minus = len(ball) - ball.rfind('B') - 1 if last == 'R' else 0
blue_minus = len(ball) - ball.rfind('R') - 1 if last == 'B' else 0
last_result = min(blue - blue_minus, red - red_minus)
# ๋งจ ์์ ๊ฒฐ๊ณผ๊ฐ๊ณผ ๋งจ ๋ค์ ๊ฒฐ๊ณผ๊ฐ ์ค ๋ ์ ์ ๊ฐ์ ์ถ๋ ฅํ๋ค.
print(min(first_result, last_result))
'๐ฉ๐ปโ๐ป ์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 14469๋ฒ ์๊ฐ ๊ธธ์ ๊ฑด๋๊ฐ ์ด์ 3 (Python) (0) | 2024.09.05 |
---|---|
[๋ฐฑ์ค] 1105๋ฒ ํ (Python) (0) | 2024.08.29 |
[๋ฐฑ์ค] 18310๋ฒ ์ํ ๋ (Python) (0) | 2024.08.20 |
[๋ฐฑ์ค] 15904๋ฒ UCPC๋ ๋ฌด์์ ์ฝ์์ผ๊น ? (Python) (0) | 2024.08.06 |
[๋ฐฑ์ค] 1202๋ฒ ๋ณด์ ๋๋ (Python) (0) | 2024.08.01 |