MUKER_DEV with iOS

[swift] ๋ฐฑ์ค€ - 1050๋ฒˆ: ์ˆซ์ž ์ •์‚ฌ๊ฐํ˜• ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/BAEKJOON

[swift] ๋ฐฑ์ค€ - 1050๋ฒˆ: ์ˆซ์ž ์ •์‚ฌ๊ฐํ˜•

MUKER 2023. 8. 10. 09:38
๋ฌธ์ œ ๋งํฌ
 

1051๋ฒˆ: ์ˆซ์ž ์ •์‚ฌ๊ฐํ˜•

N×Mํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์ด ์žˆ๋‹ค. ๊ฐ ์นธ์—๋Š” ํ•œ ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ ํ˜€ ์žˆ๋‹ค. ์ด ์ง์‚ฌ๊ฐํ˜•์—์„œ ๊ผญ์ง“์ ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•์„ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ด๋•Œ, ์ •์‚ฌ๊ฐํ˜•์€ ํ–‰

www.acmicpc.net


๋ฌธ์ œ

N×Mํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์ด ์žˆ๋‹ค. ๊ฐ ์นธ์—๋Š” ํ•œ ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ ํ˜€ ์žˆ๋‹ค. ์ด ์ง์‚ฌ๊ฐํ˜•์—์„œ ๊ผญ์ง“์ ์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ๊ฐ€์žฅ ํฐ ์ •์‚ฌ๊ฐํ˜•์„ ์ฐพ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ด๋•Œ, ์ •์‚ฌ๊ฐํ˜•์€ ํ–‰ ๋˜๋Š” ์—ด์— ํ‰ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. N๊ณผ M์€ 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ •๋‹ต ์ •์‚ฌ๊ฐํ˜•์˜ ํฌ๊ธฐ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ


์„ฑ๊ณต ํ’€์ด

import Foundation

let I = readLine()!.split {$0==" "}.map {Int($0)!}, N = I[0], M = I[1]
var arr = (0..<N).map { _ in Array(readLine()!).map {Int(String($0))!}}
var result = 1

for size in 1..<min(N,M) {
    for y in 0..<N-size {
        for x in 0..<M-size {
            let p1 = arr[y][x]
            let p2 = arr[y][x+size]
            let p3 = arr[y+size][x]
            let p4 = arr[y+size][x+size]
            
            if p1 == p2 && p2 == p3 && p3 == p4 {
                result = (size+1)*(size+1)
            }
        }
    }
}
print(result)

ํ’€์ด ํ‚ค์›Œ๋“œ

  • 3๊ฐœ์˜ ๋ฐ˜๋ณต๋ฌธ์„ ์ค‘์ฒฉํ•ด์„œ ํ’€ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋จผ์ € ๋ณ€์˜ ๊ธธ์ด๊ฐ€ 2์ธ ์ •์‚ฌ๊ฐํ˜•๋ถ€ํ„ฐ ์ตœ๋Œ€๊ธธ์ด๋ฅผ ๊ฐ€์ง„ ์ •์‚ฌ๊ฐํ˜• ๊นŒ์ง€ ํƒ์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํƒ์ƒ‰ ๊ณผ์ •์— ์ •์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ผญ์ง€์ ์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด 2์ค‘ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ (y,x)๋ฅผ ๊ตฌํ•ด (y,x)๋กœ๋ถ€ํ„ฐ size๋งŒํผ ๋–จ์–ด์ง€ 3๊ผญ์ง€์ ์„ ๊ตฌํ•ด 4๊ผญ์ง€์ ์ด ๋ชจ๋‘ ๋™์ผํ•œ์ง€ ๊ฒ€์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.