-
Notifications
You must be signed in to change notification settings - Fork 0
3-YooGyoengMo #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโll occasionally send you account related emails.
Already on GitHub? Sign in to your account
3-YooGyoengMo #18
Conversation
YooGyeongMo/๊ตฌํ/์์ข
์ด.swift
Outdated
There was a problem hiding this comment.
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์์ + ํด์ฃผ๊ฒ , ๋ฐ๋ฏธ์ ์ ์๋๊ณผ ๋์ผํ๊ฒ ํ์์ต๋๋ค !
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์์ข ์ด ํจ์ ์ง์ด๋ค์
There was a problem hiding this 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)
}์์์ ๋ง์๋๋ ธ๋ฏ ๋์ผํ ํ์ด์ธ ๊ฒ ๊ฐ์ต๋๋ค! ์ด๋ฒ ์ฌ์ดํด ๊ณ ์ํ์ จ์ด์!
There was a problem hiding this 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)
"์ ์์ค์ ์ฝ๋๊ฐ ๋ ๋น ๋ฅด๋ค"๋ผ๋๊ฒ ๊ธฐ์กด์ ์ ์๊ฐ์ด์๋๋ฐ ๊ผญ ๊ทธ๋ ์ง๋ง์ ์๋ค์..!
ํ ์ค ์์ฝ: ์ค์ฒฉ 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)")|
์ฒ์ ์ ๊ทผ์ ์ํ ๋ฌธ์ ํ๋ฏ์ด ์ ์ฒด ์ฌ๊ฐํ ๋ค ๊ตฌํด์ ๊ฒน์ณ์ง๋ ๋ถ๋ถ์ ์์ญ์ ๋นผ์ค๊น ํ๋ค๊ฐ ์ฒ์์ 100 x 100 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ฃผ๊ณ ์ฃผ์ด์ง๋ ์ขํ๊ฐ x,y ์ชฝ์ผ๋ก +10 ํด์ค ๋ถ๋ถ์ 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)
์ฌ๋ฐ๋ ๋ฌธ์ .แ. |
alstjr7437
left a comment
There was a problem hiding this 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)
YooGyeongMo/๊ตฌํ/์์ข
์ด.swift
Outdated
There was a problem hiding this comment.
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๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋ํ ์์ธ์ฒ๋ฆฌ๋ฅผ ํ์ง ๋ชปํ๋ค์..!
๋ ํด๋ฆฐํ ์ฝ๋๋ฅผ ์ง๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค.
There was a problem hiding this comment.
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 ๋ ๋น ๋ฌธ์์ด๋ ์ ์งํ๋๊ตฐ์ !! ํ .... ๊ธธ.... ๊ธธ !!!!!! ๋ฌด์์ด ์ธ๋๋ ์ด๊ตฐ๋จ !! ์ผ๋ ์ผ๋ ๋ค !!
โ์์โฆ ์ฟ์ ํผํค๋ค!!!! "
์ฐธ๊ณ ํ์๋ฉด ์ข์๊บผ๊ฐ์ต๋๋ท !!!
์์ธ์ฒ๋ฆฌ์ ๋ํ ๋ฐ์ฑ๊ณผ ์ฑ์ฐฐ ..... ์บฌ ........ ๐ซ
|
@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๋ฌธ ์ฒดํฌํ ๋ ํ๋ฒ์ ํด์ฃผ์๋ ค๋ ๊ณ ๋ฏผ์ด ๋ณด์ด์๋ ์ฝ๋์ฌ์ ์ข์์ต๋๋ค. ์ถ๊ฐ์ ์ผ๋ก ์ ๋ ๊ฒ ๋จ์์ด ํ๋์ ์กฐ๊ฑด์ด ์๋ ๋
ผ๋ฆฌ์ ์ธ ์กฐ๊ฑด์ ์ฌ๋ฟ ๋ํ์๋ ๋๋ ์ถ๊ฐ๋น์ฉ๊ณผ result += 1๊ณผ peperํ์ถ [y][x] = true๋ฅผ ๊ฐ์ด ๋ฐ๊พผ๋ค๋ฉด ๊ธฐํ๋น์ฉ์ด ๋ ๋ง์ด ๋๋ ์์
์ผ๊น์ ? ๊ถ๊ธํด์ง๋ค์.๊ทธ๋์ !! ์ฑ์คํํ
๋ฌผ์ด๋ดค๋๋ฐ์ ! ์ฆ๊ฐ์ฐ์ฐ์ ๋งค์ฐ ์ผํธ์ธ๋ฐ ๋ฐฐ์ด ์ธ๋ฑ์ค ์ฝ๊ณ ์ฐ๊ธฐ๋ ๊ฝค๋ ๋น์ผํธ์ด๋ผ๊ณ ํฉ๋๋ค. ํ์ง๋ง !! ์ฑ์ด๋ ๊ฒ์๊ณผ ํจ๊ป ๋๊น ํด๋ณด์์ฃ !!! |



๐ ๋ฌธ์ ๋งํฌ
์์ข ์ด
โ๏ธ ์์๋ ์๊ฐ
20๋ถ
โจ ์๋ ์ฝ๋
์ฌ์ค ๋ฌธ์์ด ๋ฌธ์ , ํน์ ๋์ ๋๋ฆฌ, ํด์ ๋ฌธ์ ๋ฅผ ํ๋ คํ์ผ๋, ํด๋น ๋ฌธ์ ๋ฅผ ๋ฃ์ ์ด์ ๋ ์ด๋ฒ ์ผ์ฑ ์ฝํ ๋ ์์ข ์ด ๋ถ์ด๊ธฐ์ ๊ดํด์ ๋ค์ํ ์๊ตฌ์ฌํญ๋ค์ ์ ํํ๊ฒ ๊ตฌํํ ์ ์๋๋ ์ ๋ํ ๋ฌธ์ ์์ต๋๋ค.
์ฝํ ๋ฌธ์ ๋ฅผ ํ ๋ ๊ฝค๋ ์กฐ๊ฑด์ด ๊น๋ค๋ก์ ๋๊ฑฐ ๊ฐ์, ํด๋น ๋ฌธ์ ๋ฅผ ๋ณด๋ฉด์ ์ข ๋ ์ต์ ํ ์ํฌ๋งํ ๋ฐฉ๋ฒ์ด ์๋ํด์ ๋ฌธ์ ๋ฅผ ์ฐพ์๋ณด์์ต๋๋ค.
์ด๋ฒ ๋ฌธ์ ๋ ๊ฐ๋จํ๊ฒ ์ง์ฌ๊ฐํ๋ ์๋๊ณ 10X10 ์ ์ฌ๊ฐํ์ด ์ผ์ชฝ์๋ ์ขํ์์ ๋ถํฐ ์ถ๊ฐ๋์ด์ ๊ฒน์น๋ ๋ถ๋ถ์ ์ ์ธํ๊ณ ๋์ด๋ฅผ ๊ตฌํ๋ฉด ๋๋ ๋ฌธ์ ์ ๋๋ค.
์ ๋ ํญ์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํ ๋, ์์ ์ธ๋ฑ์ฑ๊ณผ ๋ ์ธ๋ฑ์ฑ์ ๋ํด์ ๊ณ ๋ฏผ์ ๋ง์ด ํ๋ํธ์ ๋๋ค.
๋ฌธ์ ์กฐ๊ฑด
๐ ์๋กญ๊ฒ ์๊ฒ๋ ๋ด์ฉ
DFS/BFS๋ก ํ์์ ์์ ํด๋น ๋ฌธ์ ๊ฐ ์ข ๋ ์ฑ๋ฅ๋ฉด์์ ๋ฐ์ด๋ ๊น ?
์์ง ์ ์ ๋จธ๋ฆฌ๋ก๋ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ฒฐ๊ตญ DFS/BFS๋ก ํด๋ visited๋ฅผ ์ฒดํฌํด์ฃผ์ด์ผํ๊ณ Bool ์ฒดํฌ๋ฉด์์ ๊ณต๊ฐ ์ธก๋ฉด์ด ๋ ํจ์จ์ ์ผ๊ฑฐ๊ฐ๊ธดํ๋ค์.
๋ ์ข์ ์ฝ๋๊ฐ ์๋ค๋ฉด ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
์ดํ์๋ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ์ ๊ฐ์ ๋ฌธ์ ๋ค์ ํ ๋ฒ ํ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์๋ ์ฝ๋๋ ์ ๊ฐ ์์๋ณด๋ค ๋ณด๋ Bool์ ํ์ฉํ flatMap.filter ํจ์๋ฅผ ์ด์ฉํด์ ํผ ๋ต์์ง์ ๋๋ค.