-
[๋ฐฑ์ค] 12970 AB with PythonPS 2022. 5. 9. 20:52728x90๋ฐ์ํ
๐ BOJ 12970 AB
๐ก ์กฐ๊ฑด
๋ฌธ์์ด์ ๊ธธ์ด n
0 โค i < j < N ์ด๋ฉด์ s[i] == 'A' && s[j] == 'B'๋ฅผ ๋ง์กฑํ๋ (i, j) ์์ ๊ฐ์ K ๊ฐ๊ฐ ์๋ค.
N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (2 โค N โค 50, 0 โค K โค N(N-1)/2)
๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฌธ์์ด S๋ฅผ ์ถ๋ ฅํ๋ค. ๊ฐ๋ฅํ S๊ฐ ์ฌ๋ฌ ๊ฐ์ง๋ผ๋ฉด, ์๋ฌด๊ฑฐ๋ ์ถ๋ ฅํ๋ค.
S๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
์ํ, ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin n, k = map(int, stdin.readline().split()) def solve(n, k): s = list('B' * n) acnt, curk, lidx = 0, 0, -1 while curk < k: if lidx <= acnt - 1: if s[n - 1 - (acnt + 1)] == 'A': break s[n - 1 - (acnt + 1)] = 'A' lidx = n - 1 - (acnt + 1) acnt += 1 curk += 1 else: s[lidx] = 'B' s[lidx - 1] = 'A' lidx -= 1 curk += 1 return s if curk == k else '-1' answer = solve(n, k) print(*answer, sep='')
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
3 2
์คํ๊ฒฐ๊ณผ
ABB
โจ๏ธ ๋ฌธ์ ํ์ด
๋ฌธ์์ด s๋ B๋ก n๋งํผ ์ฑ์์ ์ด๊ธฐํํ๋ค.
์์ 4๋ฒ์ ์๋ก ๋ค๋ฉด, BBBBBBBBBB ์ผ๋ก ๋จผ์ s๋ฅผ ์ด๊ธฐํํ๋ค.
์ค๋ฅธ์ชฝ ๊ธฐ์ค ๋๋ฒ์งธ ๋ถํฐ A๋ฅผ ๋ฃ๋๋ฐ, ๋์ ๋ฃ์ด๋ด์ผ ์์ ๊ฐ์๊ฐ 0์ด๊ธฐ ๋๋ฌธ์ ๋๋ฒ์งธ๋ถํฐ ๋ฃ๋๋ค.
A๋ฅผ ์ผ์ชฝ์ผ๋ก ๋ฐ๋ฉด์ ์์ ๊ฐ์๋ฅผ ๊ฒ์ฌํ๋ค.
curk ์ ๊ฐ์ด k๊ฐ ๋์์ ๋, while ์ ์ข ๋ฃํ๊ณ , ๋ฌธ์์ด์ ์ถ๋ ฅํด์ค๋ค.
๋ง์ฝ while ์ด ์ข ๋ฃ๋ ํ์๋ curk ๊ฐ์ด k ์ ๊ฐ๊ณผ ๊ฐ์ง ์๋ค๋ฉด, ๋ฌธ์์ด์ ๋ง๋ค ์ ์๋ ๊ฒ์ด๋ -1์ ์ถ๋ ฅํ๋ค.
๐พ ๋๋์
- ๊ทธ๋ฆฌ๋๋ ๋๋ฌด ์ด๋ ต๋ค.
- ๋ฌธ์ ๊ฐ ์กฐ๊ธ ๋์ด๋๊ฐ ๋์์ง๋ฉด ์์ ๋์ง ๋ชปํ๋ ์ํฉ์ด ์ค๋ ๊ฒ ๊ฐ๋ค.
- ๊ทธ๋ฆฌ๋ ์ ํ์ ๋์ฑ ํ์ด๋ด์ผ๊ฒ ๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 16926 ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 1 with Python (0) 2022.05.11 [๋ฐฑ์ค] 14696 ๋ฑ์ง๋์ด with Python (0) 2022.05.11 [๋ฐฑ์ค] 11508 2+1 ์ธ์ผ with Python (0) 2022.05.09 [๋ฐฑ์ค] 2302 ๊ทน์ฅ ์ข์ with Python (0) 2022.03.31 [๋ฐฑ์ค] 2012 ๋ฑ์ ๋งค๊ธฐ๊ธฐ with Python (0) 2022.03.31