20251029 baekjoon
This commit is contained in:
parent
441e64af57
commit
9eddff8b99
2
code_study/Baekjoon/python/4101.py
Normal file
2
code_study/Baekjoon/python/4101.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
while (s := list(map(int, input().split()))) != [0]*2 :
|
||||||
|
print('Yes' if s[0] > s[1] else 'No')
|
||||||
107
code_study/Baekjoon/swift/16236.swift
Normal file
107
code_study/Baekjoon/swift/16236.swift
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
struct Node {
|
||||||
|
var x, y, dist: Int
|
||||||
|
|
||||||
|
init(_ x: Int, _ y: Int, _ dist: Int) {
|
||||||
|
self.x = x
|
||||||
|
self.y = y
|
||||||
|
self.dist = dist
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Deque {
|
||||||
|
var enqueue: [Node] = []
|
||||||
|
var dequeue: [Node] = []
|
||||||
|
|
||||||
|
func isEmpty() -> Bool {
|
||||||
|
return enqueue.isEmpty && dequeue.isEmpty
|
||||||
|
}
|
||||||
|
|
||||||
|
mutating func push(_ node: Node) {
|
||||||
|
enqueue.append(node)
|
||||||
|
}
|
||||||
|
|
||||||
|
mutating func pop() -> Node? {
|
||||||
|
if dequeue.isEmpty {
|
||||||
|
dequeue = enqueue.reversed()
|
||||||
|
enqueue.removeAll()
|
||||||
|
}
|
||||||
|
|
||||||
|
return dequeue.popLast()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func biteFish(of filed: [[Int]], _ shark: (x: Int, y: Int, size: Int)) -> Node? {
|
||||||
|
let N = filed.count
|
||||||
|
var visited = Array(repeating: Array(repeating: false, count: N), count: N)
|
||||||
|
var qu = Deque()
|
||||||
|
visited[shark.y][shark.x] = true
|
||||||
|
qu.push(Node(shark.x, shark.y, 0))
|
||||||
|
|
||||||
|
var result: [Node] = []
|
||||||
|
|
||||||
|
while !qu.isEmpty() {
|
||||||
|
if let current = qu.pop() {
|
||||||
|
let cx = current.x
|
||||||
|
let cy = current.y
|
||||||
|
let cd = current.dist
|
||||||
|
|
||||||
|
if filed[cy][cx] != 0 && filed[cy][cx] < shark.size {
|
||||||
|
result.append(Node(cx, cy, cd))
|
||||||
|
}
|
||||||
|
|
||||||
|
for (nx, ny) in [(cx, cy-1), (cx-1, cy), (cx+1, cy), (cx, cy+1)] {
|
||||||
|
if 0<=nx && nx<N && 0<=ny && ny<N && !visited[ny][nx] && filed[ny][nx] <= shark.size {
|
||||||
|
qu.push(Node(nx, ny, cd+1))
|
||||||
|
visited[ny][nx] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
result.sort(by: {($0.dist, $0.y, $0.x) < ($1.dist, $1.y, $1.x)})
|
||||||
|
|
||||||
|
return result.first
|
||||||
|
}
|
||||||
|
|
||||||
|
if let N = Int(readLine() ?? "") {
|
||||||
|
var filed: [[Int]] = []
|
||||||
|
var shark = (x: 0, y: 0, size: 2)
|
||||||
|
|
||||||
|
for y in 0..<N {
|
||||||
|
if let line = readLine(),
|
||||||
|
let nums = line.split(separator: " ").compactMap({Int($0)}) as? [Int],
|
||||||
|
nums.count == N
|
||||||
|
{
|
||||||
|
filed.append(nums)
|
||||||
|
|
||||||
|
for x in 0..<N {
|
||||||
|
if nums[x]==9 {
|
||||||
|
filed[y][x] = 0
|
||||||
|
shark.x = x
|
||||||
|
shark.y = y
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var eatCount = 0
|
||||||
|
var moveTime = 0
|
||||||
|
|
||||||
|
while true {
|
||||||
|
if let bite = biteFish(of: filed, shark) {
|
||||||
|
filed[bite.y][bite.x] = 0
|
||||||
|
eatCount += 1
|
||||||
|
moveTime += bite.dist
|
||||||
|
shark = (x: bite.x, y: bite.y, size: shark.size)
|
||||||
|
|
||||||
|
if eatCount == shark.size {
|
||||||
|
eatCount = 0
|
||||||
|
shark.size += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print(moveTime)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user