Skip to content

Conversation

@YooGyeongMo
Copy link
Collaborator

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

์ƒ‰์ข…์ด

1745074025

โœ”๏ธ ์†Œ์š”๋œ ์‹œ๊ฐ„

20๋ถ„

โœจ ์ˆ˜๋„ ์ฝ”๋“œ

์‚ฌ์‹ค ๋ฌธ์ž์—ด ๋ฌธ์ œ, ํ˜น์€ ๋”•์…”๋„ˆ๋ฆฌ, ํ•ด์‹œ ๋ฌธ์ œ๋ฅผ ํ’€๋ คํ–ˆ์œผ๋‚˜, ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ๋„ฃ์€ ์ด์œ ๋Š” ์ด๋ฒˆ ์‚ผ์„ฑ ์ฝ”ํ…Œ ๋•Œ ์ƒ‰์ข…์ด ๋ถ™์ด๊ธฐ์— ๊ด€ํ•ด์„œ ๋‹ค์–‘ํ•œ ์š”๊ตฌ์‚ฌํ•ญ๋“ค์„ ์ •ํ™•ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋А๋ƒ ์— ๋Œ€ํ•œ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

์ฝ”ํ…Œ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ๊ฝค๋‚˜ ์กฐ๊ฑด์ด ๊นŒ๋‹ค๋กœ์› ๋˜๊ฑฐ ๊ฐ™์•„, ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด์„œ ์ข€ ๋” ์ตœ์ ํ™” ์‹œํ‚ฌ๋งŒํ•œ ๋ฐฉ๋ฒ•์ด ์—†๋‚˜ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ์ฐพ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-05-01 แ„‹แ…ฉแ„Œแ…ฅแ†ซ 1 59 17

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ง์‚ฌ๊ฐํ˜•๋„ ์•„๋‹ˆ๊ณ  10X10 ์ •์‚ฌ๊ฐํ˜•์ด ์™ผ์ชฝ์•„๋ž˜ ์ขŒํ‘œ์—์„œ ๋ถ€ํ„ฐ ์ถ”๊ฐ€๋˜์–ด์„œ ๊ฒน์น˜๋Š” ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๊ณ  ๋„“์ด๋ฅผ ๊ตฌํ•˜๋ฉด ๋˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ €๋Š” ํ•ญ์ƒ ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ, ์‹œ์ž‘ ์ธ๋ฑ์‹ฑ๊ณผ ๋ ์ธ๋ฑ์‹ฑ์— ๋Œ€ํ•ด์„œ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ•˜๋Š”ํŽธ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ ์กฐ๊ฑด

  1. 100 * 100 ์ •์‚ฌ๊ฐํ˜• ์ข…์ด์— ์ •์‚ฌ๊ฐํ˜• ์ƒ‰์ข…์ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ์— 10,000 ๋ฒˆ ์ฒดํฌํ•˜๋ฉด ๋ธŒ๋ฃจํŠธ ํฌ์Šค๋กœ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฑฐ ๊ฐ™์€ ์ƒ๊ฐ์ด ๋“ฆ.
  2. ๋ธŒ๋ฃจํŠธํฌ์Šค๋กœ ๋Œ ๋•Œ ๊ทธ๋‚˜๋งˆ ์กฐ๊ธˆ์ด๋ผ๋„ ํƒ์ƒ‰์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‹œ์ž‘ ์ธ๋ฑ์Šค์™€ ๋ ์ธ๋ฑ์Šค๋ฅผ ๊ณ ๋ฏผํ•ด๋ด„
  3. ๊ทธ ๊ฒฐ๊ณผ, ํ–‰๊ณผ ์—ด์—์„œ 10์นธ๋งŒ ๋” ๊ฐ€๊ณ  ํ•ด๋‹น ์ขŒํ‘œ = 1 ์ด๋Ÿฐ์‹์œผ๋กœ ์—…๋ฐ์ดํŠธ ์‹œ์ผœ์ฃผ๋ฉด ๋ ๋“ฏ ํ•จ.
  4. ์ดํ›„ ๋‹ค ๋Œ๋ฉด์„œ 1์ธ ๋ถ€๋ถ„์„ result์— ๋ˆ„์  countํ•ด์ฃผ๋ฉด ๋˜๊ฒ ๋‹ค ์ƒ๊ฐ์ด ๋“ฆ.

๐Ÿ“š ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ๋‚ด์šฉ

DFS/BFS๋กœ ํ’€์—ˆ์„ ์‹œ์— ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ์ข€ ๋” ์„ฑ๋Šฅ๋ฉด์—์„œ ๋›ฐ์–ด๋‚ ๊นŒ ?

์•„์ง ์ €์˜ ๋จธ๋ฆฌ๋กœ๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ DFS/BFS๋กœ ํ•ด๋„ visited๋ฅผ ์ฒดํฌํ•ด์ฃผ์–ด์•ผํ•˜๊ณ  Bool ์ฒดํฌ๋ฉด์—์„œ ๊ณต๊ฐ„ ์ธก๋ฉด์ด ๋” ํšจ์œจ์ ์ผ๊ฑฐ๊ฐ™๊ธดํ•˜๋„ค์š”.

๋” ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ดํ›„์—๋Š” ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ์™€ ๊ฐ™์€ ๋ฌธ์ œ๋“ค์„ ํ•œ ๋ฒˆ ํŒŒ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋Š” ์ œ๊ฐ€ ์•Œ์•„๋ณด๋‹ค ๋ณด๋‹ˆ Bool์„ ํ™œ์šฉํ•œ flatMap.filter ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ํ‘ผ ๋‹ต์•ˆ์ง€์ž…๋‹ˆ๋‹ค.

var paper = [[Bool]](repeating: [Bool](repeating: false, count: 101), count: 101)

let n = Int(readLine()!)!
for _ in 0..<n {
    let input = readLine()!.split(separator: " ").map { Int($0)! }
    let x = input[0], y = input[1]
    for y in y..<y + 10 {
        for x in x..<x + 10 {
            paper[y][x] = true
        }
    }
}

print(paper.flatMap { $0 }.filter { $0 }.count)

Comment on lines +14 to +28
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ €๋Š” ์ฒ˜์Œ์— cnt * 100์œผ๋กœ ์ข…์ด ์•ˆ๊ฒน์ณค์„๋•Œ์˜ ์ตœ๋Œ€๊ฐ’์„ answer๋กœ ๋‘”๋‹ค์Œ์—, ์ด์ œ paper[i][j] += 1 ๋กœ ํ•ด์„œ 1์ด์ƒ์œผ๋กœ ๋˜์–ด์žˆ๋Š” ๋ถ€๋ถ„์€ ์˜คํžˆ๋ ค ๋นผ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ํ–ˆ๋Š”๋ฐ, 2๊ฐœ ์ด์ƒ ๊ฒน์ณค์„๋•Œ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์•˜์—ˆ๋‚˜๋ด์š”..! ๊ทธ๋ž˜์„œ ์ €๋„ ๊ฒฐ๊ตญ 0์—์„œ + ํ•ด์ฃผ๊ฒŒ , ๋ฐ๋ฏธ์•ˆ ์„ ์ƒ๋‹˜๊ณผ ๋™์ผํ•˜๊ฒŒ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค !

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ƒ‰์ข…์ด ํ•จ์ˆ˜ ์ง์ด๋„ค์˜ˆ

Copy link
Collaborator

@bishoe01 bishoe01 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

import Foundation

func ์ƒ‰์ข…์ด(_ cnt: Int, _ papers: [(x: Int, y: Int)]) {
    var answer = 0
    var grid = Array(repeating: Array(repeating: false, count: 100), count: 100)

    for (x, y) in papers {
        for i in x..<x+10 {
            for j in y..<y+10 {
                grid[i][j] = true
            }
        }
    }

    for i in 0..<100 {
        for j in 0..<100 {
            if grid[i][j] {
                answer += 1
            }
        }
    }
    print(answer)
}

์œ„์—์„œ ๋ง์”€๋“œ๋ ธ๋“ฏ ๋™์ผํ•œ ํ’€์ด์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! ์ด๋ฒˆ ์‚ฌ์ดํด ๊ณ ์ƒํ•˜์…จ์–ด์š”!

Copy link
Collaborator

@MuchanKim MuchanKim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(์งค ๋ญ๋ƒ๊ณ ์š” ใ…‹ใ…‹ใ…‹ใ…‹)

์šฐ์„  ์ด ๋ฌธ์ œ๋Š” ์ œ๊ฐ€ ํ‘ผ์ง€ ์–ผ๋งˆ ์•ˆ๋œ ๋ฌธ์ œ์˜€๊ธฐ์— ํ’€์ด๊ฐ€ ์–ผ์ถ” ๊ธฐ์–ต๋‚ฌ์—ˆ์Šต๋‹ˆ๋‹ค!
๋ฐ๋ฏธ์•ˆ ์ฝ”๋“œ์—์„œ 0,1 -> false, true ์ฐจ์ด๋ฐ–์— ์—†๋Š” ๊ฒƒ ๊ฐ™์•„์š”!
๊ฐœ์„ ํ•  ์ ์ด ์žˆ๋‹ค๋ฉด ์˜ฌ๋ ค์ฃผ์‹  ๋‹ค๋ฅธ๋ถ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ flatMap + filterํ•ด์ฃผ๋Š”๊ฒŒ ๋” ์ข‹์•„๋ณด์ž…๋‹ˆ๋‹ค. (์•„๋ž˜์— ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ์žˆ์Šต๋‹ˆ๋‹ค.)

๋ฐ๋ฏธ์•ˆ ์ž…๋ ฅ ๋ถ€๋ถ„ ๊ฐ€์ ธ๋‹ค ์ผ์Šต๋‹ˆ๋‹ค!

for _ in 0..<T {
    let input = readLine()!.split(separator: " ").map { Int($0)! }
    let (x, y) = (input[0], input[1])
    
    for i in x..<x+10 {
        for j in y..<y+10 {
            paper[i][j] = true
        }
    }
}

for i in 0..<maxSize {
    for j in 0..<maxSize {
        if paper[i][j] { res+=1 }
    }
}

for ๋ฃจํ”„ vs flatMap+filter vs joined+filter

gptํ•œํ…Œ ๋ฌผ์–ด๋ณด๋‹ˆ, flatMap + filter๋ฅผ ์“ฐ๋Š”๊ฒŒ for๋ฌธ๋ณด๋‹ค๋Š” ๋А๋ฆด ๊ฑฐ๋ผ๊ณ  ํ•˜๋”๋ผ๊ณ ์š”. ๊ทธ๋ž˜์„œ
100x100 ์‚ฌ์ด์ฆˆ์— 30%์ •๋„๋งŒ true๋ฅผ ์‹ฌ๊ณ  ์ฐพ์•„๋‚ด๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋‹ฌ๋ผ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ๋Š” ??

flatMap์ด ์ œ์ผ ๋นจ๋ž์Šต๋‹ˆ๋‹ค(์—ญ์‹œ GPT๋Š” ๊ต์ฐจ๊ฒ€์ฆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค). ์—ฌ๋Ÿฌ๋ฒˆ ์‹œ๋„ํ•ด๋„ ๋น„์Šทํ•œ ์ฐจ์ด๋ฅผ ๋ณด์˜€์–ด์š”.
flatMap(์••๋„์ ) > for ๋ฃจํ”„(2์ฐจ) > joined

For ๋ฃจํ”„: 2956 (์‹œ๊ฐ„: 2129.326105117798 ms)
flatMap + filter: 2956 (์‹œ๊ฐ„: 657.9310894012451 ms)
joined + filter: 2956 (์‹œ๊ฐ„: 2221.289038658142 ms)

"์ €์ˆ˜์ค€์˜ ์ฝ”๋“œ๊ฐ€ ๋” ๋น ๋ฅด๋‹ค"๋ผ๋Š”๊ฒŒ ๊ธฐ์กด์˜ ์ œ ์ƒ๊ฐ์ด์—ˆ๋Š”๋ฐ ๊ผญ ๊ทธ๋ ‡์ง€๋งŒ์€ ์•Š๋„ค์š”..!

image

ํ•œ ์ค„ ์š”์•ฝ: ์ค‘์ฒฉ for๋ฌธ์˜ ๊ฒฝ์šฐ [i][j]์™€ ๊ฐ™์ด ์ด์ค‘ ์ธ๋ฑ์‹ฑ ๋น„์šฉ์ด ๋“œ๋Š” ๋ฐ˜๋ฉด, flatMap์€ 1์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„์ ‘ ์ฐธ์กฐ ๋น„์šฉ์„ ์ค„์—ฌ์ค€๋‹ค.
๊ทธ๋ฆฌ๊ณ  flatMap์ด ์ตœ์ ํ™”๊ฐ€ ์ž˜๋˜์–ด์žˆ๋‹ค๋„ค์š”.

ํ…Œ์ŠคํŠธ ์šฉ ์ฝ”๋“œ

import Foundation

// ํ…Œ์ŠคํŠธ์šฉ 2์ฐจ์› ๋ฐฐ์—ด ์ƒ์„ฑ (100x100)
var paper = Array(repeating: Array(repeating: false, count: 100), count: 100)

// ๋žœ๋คํ•˜๊ฒŒ ์ผ๋ถ€ ๊ฐ’์„ true๋กœ ์„ค์ • (์•ฝ 30%)
for i in 0..<100 {
    for j in 0..<100 {
        if arc4random_uniform(100) < 30 {
            paper[i][j] = true
        }
    }
}

// ์„ฑ๋Šฅ ์ธก์ • ํ•จ์ˆ˜
func measureTime(_ title: String, _ operation: () -> Int) {
    let startTime = CFAbsoluteTimeGetCurrent()
    let result = operation()
    let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
    print("\(title): \(result) (์‹œ๊ฐ„: \(timeElapsed * 1000) ms)")
}

// ๊ฐ ๋ฐฉ๋ฒ•์œผ๋กœ ํ…Œ์ŠคํŠธ ์‹คํ–‰ (์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐ˜๋ณตํ•˜์—ฌ ํ‰๊ท ์ ์ธ ์„ฑ๋Šฅ ์ธก์ •)
let iterations = 1000

// ๋ฐฉ๋ฒ• 1: for ๋ฃจํ”„ 
measureTime("For ๋ฃจํ”„") {
    var count = 0
    for _ in 0..<iterations {
        count = 0
        for i in 0..<100 {
            for j in 0..<100 {
                if paper[i][j] {
                    count += 1
                }
            }
        }
    }
    return count
}

// ๋ฐฉ๋ฒ• 2: flatMap + filter
measureTime("flatMap + filter") {
    var count = 0
    for _ in 0..<iterations {
        count = paper.flatMap { $0 }.filter { $0 }.count
    }
    return count
}

// ๋ฐฉ๋ฒ• 3: joined + filter (Swift 5.2+)
measureTime("joined + filter") {
    var count = 0
    for _ in 0..<iterations {
        count = Array(paper.joined()).filter { $0 }.count
    }
    return count
}

// ๊ฒฐ๊ณผ ํ™•์ธ์„ ์œ„ํ•œ ํ•œ ๋ฒˆ์˜ ๊ณ„์‚ฐ
var forLoopResult = 0
for i in 0..<100 {
    for j in 0..<100 {
        if paper[i][j] {
            forLoopResult += 1
        }
    }
}

let flatMapResult = paper.flatMap { $0 }.filter { $0 }.count
let joinedResult = Array(paper.joined()).filter { $0 }.count

// ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ
print("\n๊ฒฐ๊ณผ ์ผ์น˜ ์—ฌ๋ถ€: \(forLoopResult == flatMapResult && flatMapResult == joinedResult)")
print("true ๊ฐ’ ๊ฐœ์ˆ˜: \(forLoopResult)")

@sep037
Copy link
Collaborator

sep037 commented May 6, 2025

์ฒ˜์Œ ์ ‘๊ทผ์€ ์ˆ˜ํ•™ ๋ฌธ์ œํ’€๋“ฏ์ด ์ „์ฒด ์‚ฌ๊ฐํ˜• ๋‹ค ๊ตฌํ•ด์„œ ๊ฒน์ณ์ง€๋Š” ๋ถ€๋ถ„์˜ ์˜์—ญ์„ ๋นผ์ค„๊นŒ ํ•˜๋‹ค๊ฐ€
์ธ๋ฑ์‹ฑ ์ž‘์—…ํ•˜๋ฉด์„œ ์ €์กฐ์ฐจ๋„ ํ—ท๊ฐˆ๋ฆด ๊ฒƒ ๊ฐ™์•„์„œ ใ…‹ใ…‹ใ…‹ใ…‹ ์‚ด์ง ์„œ์น˜(?) ํ•ด๋ดค์Šต๋‹ˆ๋‹ค.
์–ด์ฐจํ”ผ ์ตœ์ข…์ ์œผ๋กœ ๊ฒ€์€์ƒ‰ ๋ถ€๋ถ„๋งŒ ๊ณ ๋ คํ•ด์„œ ๋„“์ด๋ฅผ ๊ตฌํ•˜๋ฉด ๋˜๋Š” ๊ฑฐ๋ผ์„œ ๊ทธ๋ƒฅ ๋ฐฉ๋ฌธ ๋А๋‚Œ์œผ๋กœ๋‹ค๊ฐ€ .. ์ ‘๊ทผํ•ด๋ณด๋ ค๊ณ  ํ–ˆ์–ด์š”

์ฒ˜์Œ์— 100 x 100 2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์ฃผ์–ด์ง€๋Š” ์ขŒํ‘œ๊ฐ’ x,y ์ชฝ์œผ๋กœ +10 ํ•ด์ค€ ๋ถ€๋ถ„์„ 1๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ๋ฐฉ์‹ !
๊ทธ๋ฆฌ๊ณ  ์ตœ์ข…์ ์œผ๋กœ 1์˜ ๊ฐœ์ˆ˜๋ฅผ ์นด์šดํŠธํ•˜๋Š” ์‹์œผ๋กœ ํ–ˆ์–ด์šฉ
์‹œ๊ฐ„ ์ดˆ๊ณผ๋  ์ค„ ์•Œ์•˜๋Š”๋ฐ ๋ฐ”๋กœ ํ†ต๊ณผ๋ผ์„œ ๋จธ์“ฑ . .

( ์ œ๊ฐ€ ์ง€๊ธˆ ๊ธ€์„ ์“ฐ๋Š” ์‹œ์ ์€ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ๋ฆฌ๋ทฐ๋ฅผ ๋ณด์ง€ ์•Š์€ ์ƒํƒœ๋ผ์„œ ๋ฐฉ๋ฒ•์ด ๊ฒน์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ! ! ใ…Ž )

//
//  main.swift
//  2563
//
//  Created by Seungeun Park on 5/6/25.
//

import Foundation

let N = Int(readLine()!)!
var board = Array(repeating: Array(repeating: 0, count: 100), count: 100) // 100 x 100 ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ
var result = 0


for _ in 0 ..< N {
    let location = readLine()!.split(separator: " ").map { Int($0)! }
    var X = location[0]
    var Y = location[1]
    
    for i in X..<X+10 {
        for j in Y..<Y+10 {
            board[i][j] = 1
        }
    }
}ใ…

for i in 0..<100 {
    for j in 0..<100 {
        if board[i][j] == 1 {
            result += 1
        }
    }
}

print(result)

์žฌ๋ฐŒ๋Š” ๋ฌธ์ œ .แŸ.

Copy link
Member

@alstjr7437 alstjr7437 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋‹ค๋“ค ๋งˆ์ง€๋ง‰์— ๋ฐ˜๋ณต๋ฌธ์„ ํ•œ๋ฒˆ ๋”๋Œ๋ ค์„œ result๊ฐ’์„ ๋ฝ‘์•„๋‚ด์…จ๊ตฐ์š”!!

์ €๋Š” result๋Š” if๋ฌธ์„ ํ†ตํ•ด์„œ ๋ฐ”๋กœ ๊ณ„์‚ฐ๋˜๋„๋ก ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค!
์ด๋ฏธ ๊ฐ”๋˜ ๊ณณ(true)๋ฉด ๊ฒฐ๊ณผ๊ฐ’์€ ๋”ํ•ด์ฃผ์ง€ ์•Š๋„๋ก!

var peper = Array(repeating: Array(repeating: false, count: 100), count: 100)
var result = 0

for _ in 0..<Int(readLine()!)! {
    let point = readLine()!.split(separator: " ").map { Int(String($0))! }
    
    for x in point[0]..<point[0] + 10 {
        for y in point[1]..<point[1] + 10 {
            if x <= 100 && y <= 100 && peper[y][x] != true{
                peper[y][x] = true
                result += 1
            }
        }
    }
}

print(result)

Comment on lines +21 to +25
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ฒฐ๊ณผ ๊ณ„์‚ฐ์„ ๋งˆ์ง€๋ง‰์— ํ•˜๋ƒ~ ๋นผ๊ณค ๋˜‘๊ฐ™์€ ๋กœ์ง์œผ๋กœ ํ’€์—ˆ๋„ค์š”!
ํ™•์‹คํžˆ ํ’€์—ˆ๋˜ ๋ฌธ์ œ๋Š” ๊ธฐ์–ต์— ์ž˜ ๋‚จ๊ธดํ•˜๋„ค์š”. ํ•˜ํ•˜..

์ „ ์ด ๋ฌธ์ œ ๋˜๊ฒŒ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค.
์ƒ‰์น  ์—ฌ๋ถ€๋ฅผ ๋‹จ์ˆœํžˆ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋กœ์ง ์ž์ฒด๊ฐ€ ์ง๊ด€์ ์ด๋ฉด์„œ๋„,
๋ฌธ์ œ์˜ ์˜๋„(๊ฒน์น˜๋Š” ์˜์—ญ์€ ํ•œ ๋ฒˆ๋งŒ ๊ณ„์‚ฐ)๋ฅผ ์ •ํ™•ํžˆ ๋ฐ˜์˜ํ•˜๋Š” ๊ตฌ์กฐ๋‹ˆ๊นŒ์š”.

๋˜ํ•œ ์ƒ‰์ข…์ด ๊ฒน์นจ์ด๋ผ๋Š” ํ˜„์‹ค์ ์ธ ๋น„์œ  ๋•๋ถ„์—
์กฐ๊ฑด์„ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์—์„œ โ€œ๊ณต๊ฐ„์„ ์ฑ„์šด๋‹คโ€๋Š” ๊ฐœ๋…์ด ๋ช…ํ™•ํ•˜๊ฒŒ ๊ทธ๋ ค์ง€๋Š” ์ ๋„ ํ•™์Šต ํšจ๊ณผ๊ฐ€ ์ข‹๋‹ค๊ณ  ๋А๊ผˆ์Šต๋‹ˆ๋‹ค!

๊ฐœ์ธ์ ์ธ ๋ฆฌ๋ทฐ์ง€๋งŒ ๋ฃจ๋ฏธ์˜ ์„ธ์…˜๋“ฃ๊ณ  ์กฐ๊ธˆ์€ ๋ถ„๋ฆฌ๋ฅผ ์—ฐ์Šตํ•˜๊ณ  ์žˆ์–ด์š”~
๊ฐ„๋‹จํ•ด๋„ ๋ฉ”์ธ์ฝ”๋“œ์—์„œ ๋น ์ง€๋‹ˆ๊นŒ ๋ณด๊ธฐ ๋” ์ข‹๊ธฐ๋„ ํ•˜๋„ค์š”!

/* MARK: - SOLUTION
 
 ๋„ํ™”์ง€๋ฅผ ๋งŒ๋“ค๊ณ ..
 ์ขŒํ‘œ๊ฐ’ ๊ธฐ์ค€์œผ๋กœ ์ƒ‰์น ์„ ํ•˜์ž.
 ๊ทธ๋ฆฌ๊ณ  ์ƒ‰์น ๋œ ๋ถ€๋ถ„๋งŒ ๋‹ค ๋”ํ•˜๋ฉด๋จ. ์–ด์ฐจํ”ผ ์นธ๋‹น ํฌ๊ธฐ 1์ž„.
 
 */
import Foundation

var whitePaper: [[Int]] = Array(repeating: Array(repeating: 0, count: 100), count: 100)
var area = 0

guard let paperNum = Int(readLine() ?? "") else { exit(0) }

// ์ขŒํ‘œ ์ž…๋ ฅ๋ฐ›๊ณ  ์ƒ‰์น ํ•˜๊ธฐ
(0..<paperNum).forEach { _ in
    guard let points = readLine()?.components(separatedBy: " "),
          let first = Int(points[0]),
          let second = Int(points[1]) else { exit(0) }
    
    coloringPaper(first, second)
}

// ์ƒ‰์น ํ•จ์ˆ˜
func coloringPaper(_ x: Int, _ y: Int) {
    for i in 0..<10 {
        for j in 0..<10 {
            if whitePaper[y + i][x + j] == 0 {
                whitePaper[y + i][x + j] = 1
                area += 1
            }
        }
    }
}

print(area)

๋ฆฌ๋ทฐ ๋‹ฌ๋ฉด์„œ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋Š”๋ฐ.
๊ฐ ์ขŒํ‘œ ์ž…๋ ฅ์„ ๋ฐ›๊ณ  x, y ์ด๋Ÿฐ์‹์œผ๋กœ ๋‚˜๋ˆŒ๋•Œ
๋‚˜๋ˆ ์ง„ ๊ฐ’ ์นด์šดํŠธ๊ฐ€ 2๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ชปํ–ˆ๋„ค์š”..!
๋” ํด๋ฆฐํ•œ ์ฝ”๋“œ๋ฅผ ์งœ๋„๋ก ๋…ธ๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

guard let ์˜ˆ์ˆ ์ž…๋‹ˆ๋‹ค ์ง„์งœ ์‚ฌ์šฉ์ž ์‹ค์ œ ์ž…๋ ฅํ•˜๋Š”๊ฑฐ ๋งนํ‚ค๋กœ .. ์บฌ ~~~~

components ์™€ split์˜ ์ฐจ์ด๊ฐ€ ๊ถ๊ธˆํ•ด์ ธ์„œ ๋˜ ๊ฒ€์ƒ‰์„ ํ•ด๋ณด์•˜๋Š”๋ฐ์šง !

์™€.. ์—ญ์‹œ split์€ substring์ด์–ด์„œ ์•ˆ์ •์„ฑ๋ถ€๋ถ„์—์„œ ๋” ๋‚ฎ๋„ค์š” ...

split์€ ๋นˆ ์š”์†Œ๋ฅผ ๋ฌด์‹œํ•˜๊ณ  , components ๋Š” ๋นˆ ๋ฌธ์ž์—ด๋„ ์œ ์ง€ํ•˜๋Š”๊ตฐ์š” !! ํ—‰ .... ๊ธธ.... ๊ธธ !!!!!! ๋ฌด์„œ์šด ์–ธ๋”๋…์ด๊ตฐ๋‡จ !! ์•ผ๋ ˆ์•ผ๋ ˆ๋‹ค !!

โ€œ์š”์‹œโ€ฆ ์ฟ„์™€ ํ˜ผํ‚ค๋‹ค!!!! "

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-05-07 แ„‹แ…ฉแ„’แ…ฎ 10 33 39

์ฐธ๊ณ ํ•˜์‹œ๋ฉด ์ข‹์„๊บผ๊ฐ™์Šต๋‹ˆ๋‹ท !!!

์˜ˆ์™ธ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋ฐ˜์„ฑ๊ณผ ์„ฑ์ฐฐ ..... ์บฌ ........ ๐Ÿซ 

@YooGyeongMo
Copy link
Collaborator Author

@alstjr7437 ํ‚จ๋” ~

for x in point[0]..<point[0] + 10 {
    for y in point[1]..<point[1] + 10 {
        if x <= 100 && y <= 100 && peper[y][x] != true {
            peper[y][x] = true
            result += 1
        }
    }
}

ํ•ด๋‹น ์ฝ”๋“œ์—์„œ

       if x <= 100 && y <= 100 && peper[y][x] != true {
            peper[y][x] = true

๋งค๋ฒˆ if๋ฌธ ์ฒดํฌํ• ๋•Œ ํ•œ๋ฒˆ์— ํ•ด์ฃผ์‹œ๋ ค๋Š” ๊ณ ๋ฏผ์ด ๋ณด์ด์‹œ๋Š” ์ฝ”๋“œ์—ฌ์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€์ ์œผ๋กœ ์ €๋ ‡๊ฒŒ ๋‹จ์ˆœ์ด ํ•˜๋‚˜์˜ ์กฐ๊ฑด์ด ์•„๋‹Œ ๋…ผ๋ฆฌ์ ์ธ ์กฐ๊ฑด์„ ์—ฌ๋Ÿฟ ๋”ํ–ˆ์„๋•Œ ๋“œ๋Š” ์ถ”๊ฐ€๋น„์šฉ๊ณผ result += 1๊ณผ peperํ›„์ถ” [y][x] = true๋ฅผ ๊ฐ™์ด ๋ฐ”๊พผ๋‹ค๋ฉด ๊ธฐํšŒ๋น„์šฉ์ด ๋” ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…์ผ๊นŒ์š” ? ๊ถ๊ธˆํ•ด์ง€๋„ค์š”.๊ทธ๋ž˜์„œ !! ์ฑ—์Œคํ•œํ…Œ ๋ฌผ์–ด๋ดค๋Š”๋ฐ์˜ˆ !
แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-05-07 แ„‹แ…ฉแ„’แ…ฎ 10 29 01

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2025-05-07 แ„‹แ…ฉแ„’แ…ฎ 10 29 14

์ฆ๊ฐ€์—ฐ์‚ฐ์€ ๋งค์šฐ ์‹ผํŽธ์ธ๋ฐ ๋ฐฐ์—ด ์ธ๋ฑ์Šค ์ฝ๊ณ  ์“ฐ๊ธฐ๋Š” ๊ฝค๋‚˜ ๋น„์‹ผํŽธ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ !! ์ฑ—์ด๋‹ˆ ๊ฒ€์ƒ‰๊ณผ ํ•จ๊ป˜ ๋””๊น…ํ•ด๋ณด์‹œ์ฃ  !!!

@YooGyeongMo YooGyeongMo merged commit 68c1bc5 into main May 7, 2025
6 checks passed
@alstjr7437 alstjr7437 deleted the 3-YooGyeongMo branch May 23, 2025 06:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants