๐ค ์ฒ์ ์ง ์ฝ๋ - ์คํจ
board = list(input().split('.'))
ans = str()
for i in range(len(board)):
target = len(board[i])
if target % 2 !=0: # X์ ๊ฐ์๊ฐ ํ์์ธ ๊ฒ ํ๋๋ผ๋ ์กด์ฌํ๋ฉด
print(-1)
exit()
if board[i] == '':
ans += '.'
else:
if target % 4 == 0:
ans += 'AAAA'
elif target % 2 == 0:
ans += 'BB'
# ์ฌ๊ธฐ์ ๊ทธ๋ฆฌ๋
else:
๋ฌธ์ ๋ ์ดํด ํ๋๋ฐ ๊ทธ๋ฆฌ๋ ์์ฑ์์ ์คํจํ๋ค. ๋ง์ฝ ๊ธธ์ด๊ฐ 6์ด๋ 10์ธ X๋ฌธ์์ด์ ๋ง๋๋ค๋ฉด ๋จผ์ 'AAAA'๋ฅผ ๋จผ์ ์ฑ์์ฃผ๊ณ , ๋จ์ 2์๋ฆฌ์ 'BB'๋ฅผ ์ฑ์์ค๋ค๋ ๋ก์ง์ ์๊ฐํ๋๋ฐ ์คํจ
๐ป ์ฐธ๊ณ ์ฝ๋
ํ์๊ฐ ์ข ๋๊ฒ ๊ณ ๋ฏผ์ ํ๋ค๊ฐ ๊ตฌ๊ธ๋ง์ ํ๊ณ , ์ฐธ๊ณ ํด์ ๊ณ ๋ฏผํด๋ ์ํ๋ ค์ ๊ฒฐ๊ตญ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋ค. ์ฌ๋ฌ ์ฝ๋ ์ค ๊ฐ์ฅ ๋ฌธ์ ์๋์ ๋ถํฉํ๋ค๊ณ ์๊ฐ์ด ๋๋ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ๋ค.
board = input()
ans = []
i = 0
while i < len(board):
if board[i:i+4] == 'XXXX':
ans.append('AAAA')
i += 4
elif board[i:i+2] == 'XX':
ans.append('BB')
i += 2
elif board[i] == '.':
ans.append('.')
i += 1
else:
break
ans = ''.join(ans) # list -> string
if len(board) == len(ans):
print(ans)
else:
print(-1)
์ด์ ๋
1) ๋ต์ ์์ฑํ ๋ ๋ฌธ์์ด์ด ์๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
2) ๋ฌธ์์ด ์ธ๋ฑ์ฑ ํ์ฉ(๋ด๊ฐ ํด๊ฒฐํ์ง ๋ชปํ ๋ถ๋ถ์ด ๊ฐ๋จํ๊ฒ ํด๊ฒฐ๋จ)
3) ์ง๊ด์
๐ ๋ง๊ฐ์ ์ด์ฉํ list(mutable)์ ๋ฌธ์์ด(immutable)์ ๋น๊ต
1. ๋ฆฌ์คํธ ๋ mutable ๋ฌธ์์ด์ immutable์ด๋ค. immutable data๋ ์์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฐ๋ฅํ์ง๋ง, ์ธ๋ฑ์ค๋ฅผ ํตํด ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, ์๋ก ์ ์๋ฅผ ํด์ ์ฌ์ฉํด์ผ ํ๋ค. ๋ถ๋ณ ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ ๋ด์ฉ ์์ฒด๋ฅผ ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ๊ฒ ๋ถ๋ณ ์๋ฃํ์ ๋งค๋ฒ ๊ฐ์ ์๋ก ์ ์ํด์ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์์ ๋ถ๋ฆฌํ ๋ฉด์ด ์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์ ํ ์๋ ๊ฒ์ ์๋๋ค. join ํจ์(๋ฌธ์์ด ๊ฒฐํฉ)๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฌธ์์ด์ ํฉ์น ์ ์๋ ๊ณต๊ฐ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๊ณ , ํ๋ฒ์ ํฉ์น๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๋ค. ๋ถ๋ณ ์๋ฃํ์ ์ฅ์ ๊ณผ ๋จ์ ์ ๋ํด์๋ ์ฐธ๊ณ ์๋ฃ 1๋ฒ์ ์ฐธ๊ณ ํ์.. ๋์์ด ๋ง์ด ๋๋ค.
๊ฒฐ๋ก : ์ด ๋ฌธ์ ์์๋ ํด๋ฆฌ์ค๋ฏธ๋ ธ 2๊ฐ๊ฐ '๋ฌดํ์ '์ผ๋ก ์ฌ์ฉ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด์ด ์๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ ์ฝ๋๋ฅผ ์ ํธํ๋ค.
๐ก ์๊ฒ๋ ์
1. ๋ฌธ์์ด Indexing์ ๋ฐ๋ณต๋ฌธ์ ํตํด index ์ซ์ํ์ผ๋ก ํ๊ณ ์ถ์ ๋ while๋ฌธ ํ์ฉ
(for๋ฌธ ์๋ฆฌ๋ฅผ ์ ์ดํดํด์ผ ํ๋ค. for ๋ด์ฉ ํ๋ํ๋ in ๋ฐ๋ณตํ ๊ฒ)
2. ๋ฆฌ์คํธ์ ๋ฌธ์์ด์ ์ฐจ์ด/๋ถ๋ณ ๋ฐ์ดํฐ์ ์ฅ๋จ์
3. join ํจ์
ans = ''.join(ans) # list -> string
์ฌ๊ธฐ ์๋ค๋ก print๋ฅผ ์ฐ์ด๋ณด๋ฉด,
์ด๋ฐ ์ถ๋ ฅ์ด ๋์จ๋ค.
๐ ์ฐธ๊ณ ์๋ฃ
https://twinstae.github.io/string-immutable/
immutable ๊ด๋ จ๋ ์ด์ผ๊ธฐ๊ฐ ์ ์ ๋ฆฌ๋์ด์๋ค.
https://gud0824.tistory.com/143
https://blockdmask.tistory.com/468
'PS > BOJ&Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/4458] ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก (0) | 2023.01.01 |
---|---|
[๋ฐฑ์ค/15726] ์ด์น์ฐ์ฐ (0) | 2023.01.01 |
[๋ฐฑ์ค/1712] ์์ต๋ถ๊ธฐ์ (1) | 2022.12.31 |
[๋ฐฑ์ค/11723] ์งํฉ (0) | 2022.12.31 |
[๋ฐฑ์ค/1934] ์ต์๊ณต๋ฐฐ์ feat. ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ (2) | 2022.12.27 |