๐Ÿงฉ Algorithm/SWEA

[SWEA] 1215. [S/W ๋ฌธ์ œํ•ด๊ฒฐ ๊ธฐ๋ณธ] 3์ผ์ฐจ - ํšŒ๋ฌธ1 (Python/D3)

devCloud 2024. 10. 22. 18:09
728x90

[๋ฌธ์ œ ๋งํฌ] ๐Ÿ‘‡

 

SW Expert Academy

SW ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ๋Ÿ‰ ๊ฐ•ํ™”์— ๋„์›€์ด ๋˜๋Š” ๋‹ค์–‘ํ•œ ํ•™์Šต ์ปจํ…์ธ ๋ฅผ ํ™•์ธํ•˜์„ธ์š”!

swexpertacademy.com


 

ํ’€์ด

๊ฐ€๋กœ ํšŒ๋ฌธ ๊ฒ€์‚ฌ

for i in range(8):
    for j in range(8 - length + 1):
    	row_slice = board[i][j:length + j]
        if row_slice == row_slice[::-1]:
            result += 1
  • ๊ฐ€๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ๋ฌธ์„ ์ฐพ๋Š” ๋ฃจํ”„์ด๋‹ค.
  • for i in range(8)
    • ๊ธ€์žํŒ์˜ ๊ฐ ํ–‰(i๋ฒˆ์งธ ํ–‰)์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ™•์ธํ•œ๋‹ค.
  • for j in range(8 - length + 1)
    • ๊ฐ ํ–‰์—์„œ length ๊ธธ์ด์˜ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•  ์‹œ์ž‘ ์ธ๋ฑ์Šค j ๋ฅผ ์„ค์ •ํ•œ๋‹ค.
    • 8 - length + 1์€ ํšŒ๋ฌธ์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์ž‘ ์ง€์ ์˜ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•œ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด, length๊ฐ€ 4์ผ ๊ฒฝ์šฐ, ๊ฐ€๋Šฅํ•œ ์‹œ์ž‘ ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ 4๊นŒ์ง€.)
  • row_slice = board[i][j:j + length]
    • board[i]์˜ j๋ฒˆ์งธ ์œ„์น˜์—์„œ length๋งŒํผ ์ž๋ฅธ ๋ฌธ์ž์—ด์„ row_slice์— ์ €์žฅํ•œ๋‹ค.
  • if row_slice == row_slice[::-1]
    • row_slice๊ฐ€ ๋’ค์ง‘์€ ๊ฐ’๊ณผ ๋™์ผํ•œ์ง€ ํ™•์ธํ•˜์—ฌ ํšŒ๋ฌธ์ธ์ง€ ๊ฒ€์‚ฌ. ํšŒ๋ฌธ์ด๋ผ๋ฉด result๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

 

์„ธ๋กœ ํšŒ๋ฌธ ๊ฒ€์‚ฌ

for i in range(8):
    for j in range(8 - length + 1):
        col_slice = ''.join(board[j + k][i] for k in range(length))
        if col_slice == col_slice[::-1]:
            result += 1
  • ์„ธ๋กœ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ๋ฌธ์„ ์ฐพ๋Š” ๋ฃจํ”„์ด๋‹ค.
  • for i in range(8)
    • ๊ธ€์žํŒ์˜ ๊ฐ ์—ด(i๋ฒˆ์งธ ์—ด)์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ™•์ธํ•œ๋‹ค.
  • for j in range(8 - length + 1)
    • ๊ฐ ์—ด์—์„œ length ๊ธธ์ด์˜ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•  ์‹œ์ž‘ ์ธ๋ฑ์Šค j๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • col_slice = ''.join(board[j + k][i] for k in range(length))
    • j์—์„œ ์‹œ์ž‘ํ•˜์—ฌ length ๊ธธ์ด๋งŒํผ ์„ธ๋กœ๋กœ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ๊ฐ ํ–‰์—์„œ i๋ฒˆ์งธ ์—ด์˜ ๊ธ€์ž๋ฅผ ์ถ”์ถœํ•˜์—ฌ col_slice์— ๋ฌธ์ž์—ด๋กœ ์ €์žฅํ•œ๋‹ค.
    • ''.join()์„ ์‚ฌ์šฉํ•ด ์ถ”์ถœํ•œ ๊ธ€์ž๋“ค์„ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์นœ๋‹ค.
  • if col_slice == col_slice[::-1]
    • col_slice๊ฐ€ ๋’ค์ง‘์€ ๊ฐ’๊ณผ ๋™์ผํ•œ์ง€ ํ™•์ธํ•˜์—ฌ ํšŒ๋ฌธ์ธ์ง€ ๊ฒ€์‚ฌํ•œ๋‹ค. ํšŒ๋ฌธ์ด๋ผ๋ฉด result๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

 

 

Solution

for tc in range(1, 11):
    length = int(input()) #ํšŒ๋ฌธ ๊ธธ์ด
    board = [input().strip() for _ in range(8)]
    result = 0 #๊ฒฐ๊ณผ
    #๊ฐ€๋กœ ํ™•์ธ
    for i in range(8):
        for j in range(8 - length + 1): #length๊ฐ€ 4๋ฉด (0, 5)
            row_slice = board[i][j:length + j]
            if row_slice == row_slice[::-1]:
                result += 1
    #์„ธ๋กœ ํ™•์ธ
    for i in range(8):
        for j in range(8 - length + 1):
            col_slice = ''.join(board[j + k][i] for k in range(length))
            if col_slice == col_slice[::-1]:
                result += 1

    print("#%d %d" % (tc, result))

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

์•„.. ์ •๋ง ํ™”๋”ฑ์ง€ ๋‚˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ๊ฐ€๋กœ๊นŒ์ง€๋Š” ๋ฌธ์ œ์—†์—ˆ๋Š”๋ฐ ์„ธ๋กœ๋ฅผ ํ™•์ธํ•  ๋•Œ ์Šฌ๋ผ์ด์‹ฑ์ด ์•ˆ ๋œ๋‹ค๋Š” ๊ฑธ ๋Šฆ๊ฒŒ ๊นจ๋‹ฌ์•„์„œ ์‹œ๊ฐ„์„ ๋งŽ์ด ์ผ๋‹ค. ๋‹ค์Œ์— ๋‹ค์‹œ ํ’€์–ด๋ด์•ผ ํ•  ๋ฌธ์ œ์ด๋‹ค.

 


 

728x90