[๋ฌธ์ ๋งํฌ] ๐
SW Expert Academy
SW ํ๋ก๊ทธ๋๋ฐ ์ญ๋ ๊ฐํ์ ๋์์ด ๋๋ ๋ค์ํ ํ์ต ์ปจํ ์ธ ๋ฅผ ํ์ธํ์ธ์!
swexpertacademy.com
ํ์ด
ํ๋ฌธ ๊ธธ์ด ๊ณ์ฐ
ํฐ ๊ธธ์ด๋ถํฐ ์ค์ฌ๊ฐ๋ฉด์ ๋ฌธ์์ด์ ์ถ์ถํ๊ณ ํ๋ฌธ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํด ์ฒซ ๋ฒ์งธ ํ๋ฌธ์ ์ฐพ์ผ๋ฉด ํด๋น ๊ธธ์ด๋ฅผ ๋ฐํํ๋ค.
ํ ์ด ๋ณํ ๋ฐฉ๋ฒ - zip()
new_board = [list(i) for i in zip(*board)]
Solution
def palindrome(board):
length, max_len = 0, 0
for i in range(100):
for j in range(100):
for k in range(100):
word_slice = board[i][j:j + k]
if word_slice == word_slice[::-1]:
length = len(word_slice)
if max_len < length:
max_len = length
return max_len
for _ in range(10):
test_case = int(input())
board = [input().strip() for _ in range(100)]
row_len = palindrome(board)
#ํ ์ด ๋ณํ
new_board = [list(i) for i in zip(*board)]
col_len = palindrome(new_board)
if row_len > col_len:
result = row_len
else:
result = col_len
print(f"#{test_case} {result}")
์ ์ฝ๋์ ๊ตฌ์กฐ๋ ๋ง๋ ํธ์ด์ง๋ง, ํ์ฌ ์ฝ๋์์ ๋ช ๊ฐ์ง ์ฑ๋ฅ ๋ฌธ์ ์ ์ ์ฌ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ฝ๋๊ฐ 100x100 ๋ฐฐ์ด์ ๋์์ผ๋ก ๋ชจ๋ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ฒ์ฌํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์, ์ต์ ์ ๊ฒฝ์ฐ ์๋นํ ๋๋ ค์ง ์ ์๋ค. ๋ค์์ ๋ฌธ์ ๋ฅผ ์ต์ ํํ๊ณ ์์ ์ ์ผ๋ก ์์ ํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ๊ฐ์ ์ฌํญ์ด๋ค.
๊ฐ์ ์ฌํญ
- ๋ถํ์ํ ๋ฐ๋ณต๋ฌธ ์ ๊ฑฐ
- for k in range(100):๋ board[i][j:j + k]๋ก ๊ณ์ํด์ ๋ถ๋ถ ๋ฌธ์์ด์ ์ถ์ถํ์ง๋ง, ์ด ๋ฐฉ์์ ์ ์งํ๋ฉด ๋ชจ๋ ๋ถ๋ถ ๋ฌธ์์ด์ ๋งค๋ฒ ๋ค์ ๊ฒ์ฌํ๋ฏ๋ก ํจ์จ์ฑ์ด ๋จ์ด์ง๋๋ค.
- ๋์ , ๊ธธ์ด๊ฐ ํฐ ๋ถ๋ถ ๋ฌธ์์ด๋ถํฐ ๊ฒ์ฌํ์ฌ ์ฒ์์ผ๋ก ํ๋ฌธ์ ๋ฐ๊ฒฌํ๋ฉด ๊ทธ ๊ธธ์ด๊ฐ ์ต๋ ๊ธธ์ด๊ฐ ๋ฉ๋๋ค. ์ด๋ฅผ ์ํด for k in range(100, 0, -1)๋ก ์์ ํ์ฌ ํฐ ๊ธธ์ด๋ถํฐ ์ค์ฌ๊ฐ๋ฉฐ ํ๋ฌธ์ ์ฐพ์ผ๋ฉด, ์ฒซ ํ๋ฌธ์ ์ฐพ์ ๋ ๋ฐ๋ก ๊ทธ ๊ธธ์ด๊ฐ ์ต๋๊ฐ์ด ๋ฉ๋๋ค.
- length ๋ณ์์ ๋ถํ์ํ ์
๋ฐ์ดํธ
- length๋ max_len์ด ๊ฐฑ์ ๋ ๋๋ง ํ์ํ๊ธฐ ๋๋ฌธ์, ์กฐ๊ฑด๋ฌธ์ ๊ฐ์ํํ์ฌ ์ฝ๋ ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
- ์ฌ์ํ ๋
ผ๋ฆฌ ๊ฐ์
- ๊ฒฐ๊ณผ๋ฅผ row_len๊ณผ col_len ์ค์์ ๋ ํฐ ๊ฐ์ผ๋ก ๋ฐ๋ก ํ ๋นํ๋๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ต์ ํ๋ ์ฝ๋
def palindrome(board):
max_len = 0
for i in range(100):
for j in range(100):
for k in range(100, 0, -1): #ํฐ ๊ธธ์ด๋ถํฐ ์์ํ์ฌ ๊ฒ์ฌ
if j + k <= 100:
word_slice = board[i][j:j + k]
if word_slice == word_slice[::-1]: # ํ๋ฌธ ํ์ธ
max_len = max(max_len, k) # ์ต๋ ๊ธธ์ด ๊ฐฑ์
break # ์ต๋ ๊ธธ์ด ์ฐพ์์ผ๋ฏ๋ก ๋ ์งง์ ๊ธธ์ด๋ ๊ฒ์ฌํ์ง ์์
return max_len
for _ in range(10):
test_case = int(input())
board = [input().strip() for _ in range(100)]
row_len = palindrome(board)
#ํ ์ด ๋ณํ
new_board = [list(i) for i in zip(*board)]
col_len = palindrome(new_board)
result = max(row_len, col_len)
print(f"#{test_case} {result}")
๐ฉ๐ป ํ๊ณ
์ ๋ฒ์ ํ๋ฌธ 1 ๋ฌธ์ ์ฒ๋ผ ๋ ์ ๋๋ก ํด๊ฒฐ ๋ชปํ ๊น๋ด ๊ฑฑ์ ํ๋๋ฐ ๊ฐ์๊ธฐ ๋ฌธ๋ ํ ์ด์ ๋ณํํ๋ ๋ฉ์๋๊ฐ ์์ง ์์๊น ํ๊ณ ์ฐพ์๋ดค๋๋ฐ ์ ๋ง ์์๋ค. ๋๋ถ์ ์ด๋ ต์ง ์๊ฒ ํด๊ฒฐํ๋ค.!!
๊ณ ๋ คํด์ผํ๋ ๊ฑด ํ๋ฌธ์ ๊ธธ์ด๊ฐ ์ ํด์ ธ์์ง ์์์ ์ผ์ผ์ด ๊ธธ์ด๋ฅผ ์กฐ์ ํด๊ฐ๋ฉฐ ๋ชจ๋ ๊ฒ์ฌ ํ์ด์ผ ํ๋ค๋ ์ ์ด๋ค. 3์ค for๋ฌธ๊น์ง ๋๋ ค์ ์๊ฐ๋ณต์ก๋๊ฐ ์ปค์ก์ง๋ง ์ฝ๋๋ฅผ ์ต์ ํํ๋๊น ๊ธฐ์กด๋ณด๋ค ์ ๋ฐ์ด๋ ์์์ก๋ค. ์์ผ๋ก ์๊ฐ๋ณต์ก๋๋ ๊ณ ๋ คํด๊ฐ๋ฉด์ ์ฝ๋๋ฅผ ์ง๋ ๊ฒ์ด ์ข๊ฒ ๋ค.
'๐งฉ Algorithm > SWEA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [SWEA] 1209. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 2์ผ์ฐจ - Sum (Python/D3) (0) | 2024.10.25 |
|---|---|
| [SWEA] 14692. ํต๋๋ฌด ์๋ฅด๊ธฐ (Python/D3) (0) | 2024.10.25 |
| [SWEA] 6692. ๋ค์์ด์ ์๊ธ ์์ (Python/D3) (0) | 2024.10.24 |
| [SWEA] 11856. ๋ฐ๋ฐ (Python/D3) (0) | 2024.10.24 |
| [SWEA] 2805. ๋์๋ฌผ ์ํํ๊ธฐ (Python/D3) (0) | 2024.10.24 |