백준/골드
-
https://www.acmicpc.net/problem/5427 5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에 www.acmicpc.net import Foundation let dx = [1, -1, 0, 0] let dy = [0, 0, 1, -1] var buildingMap: [[Character]] = [] var shangunQueue: [(Int, Int)] = [] var shangunBoard: [[Int]] = [] var fireQueue: [(Int, Int)] = [] var fireBoard: [[Int]] = [] fu..
[Swift] 5427번 : 불https://www.acmicpc.net/problem/5427 5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에 www.acmicpc.net import Foundation let dx = [1, -1, 0, 0] let dy = [0, 0, 1, -1] var buildingMap: [[Character]] = [] var shangunQueue: [(Int, Int)] = [] var shangunBoard: [[Int]] = [] var fireQueue: [(Int, Int)] = [] var fireBoard: [[Int]] = [] fu..
2024.03.18 -
https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net import Foundation var demessions = readLine()! .split(separator: " ") .compactMap { Int($0) } let X = demessions[1] let Y = demessions[0] let Z = demessions[2] print(BFS(X, Y, Z)) func BFS(_ X: Int, _ Y: Int, _..
[Swift] 7569번 : 토마토https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net import Foundation var demessions = readLine()! .split(separator: " ") .compactMap { Int($0) } let X = demessions[1] let Y = demessions[0] let Z = demessions[2] print(BFS(X, Y, Z)) func BFS(_ X: Int, _ Y: Int, _..
2024.03.18 -
https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net import Foundation let RED = "R" let GREEN = "G" let BLUE = "B" var boardRGB: [[String]] = [] var boardRB: [[String]] = [] final class BFS { private let dx = [1, -1, 0, 0] private let dy = [0, 0, 1, -1] private let board..
[Swift] 10026번 : 적록색약https://www.acmicpc.net/problem/10026 10026번: 적록색약 적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못한다. 따라서, 적록색약인 사람이 보는 그림은 아닌 사람이 보는 그림과는 좀 다를 수 있다. 크기가 N×N인 그리드의 각 칸에 R(빨강), G(초록) www.acmicpc.net import Foundation let RED = "R" let GREEN = "G" let BLUE = "B" var boardRGB: [[String]] = [] var boardRB: [[String]] = [] final class BFS { private let dx = [1, -1, 0, 0] private let dy = [0, 0, 1, -1] private let board..
2024.03.18 -
https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net import Foundation var demessions = readLine()! .split(separator: " ") .compactMap { Int($0) } let N = demessions.first! let M = demessions.last! let dx = [1, 0, -1, 0] let dy = [0, 1, 0, -1] var boards: [[String]] ..
[Swift] 4179번 : 불!https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net import Foundation var demessions = readLine()! .split(separator: " ") .compactMap { Int($0) } let N = demessions.first! let M = demessions.last! let dx = [1, 0, -1, 0] let dy = [0, 1, 0, -1] var boards: [[String]] ..
2024.03.18 -
https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net import Foundation var demessions = readLine()! .split(separator: " ") .compactMap { Int($0) } let N = demessions.last! let M = demessions.first! print(bfs(N, M)) func bfs(_ N: Int, _ M: Int) -> Int { let dir: [(x: ..
[Swift] 7576번 : 토마토https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net import Foundation var demessions = readLine()! .split(separator: " ") .compactMap { Int($0) } let N = demessions.last! let M = demessions.first! print(bfs(N, M)) func bfs(_ N: Int, _ M: Int) -> Int { let dir: [(x: ..
2024.03.18 -
for문으로 풀면 시간초과가 걸려서 stack으로 풀었습니다. 문제에선 오른쪽에서 왼쪽으로 진행되어서 입력받는 역순으로 풀었었는데 반대로 생각해보면 입력받았을 때 왼쪽에 수신을 받는 친구가 없다면 입력받은 탑이 현재 가장 높은 탑이되어버리니 다음 입력에서는 현재 입력받은 탑을 기준으로 왼쪽에 있는 탑들은 필요가 없어지는 것입니다 import Foundation let n = Int(readLine()!)! let arr = readLine()!.components(separatedBy: " ").compactMap { Int($0) } var stack: [(height: Int, index: Int)] = [(100000001, 0)] for index in 0..
[Swift] 2493번 : 탑for문으로 풀면 시간초과가 걸려서 stack으로 풀었습니다. 문제에선 오른쪽에서 왼쪽으로 진행되어서 입력받는 역순으로 풀었었는데 반대로 생각해보면 입력받았을 때 왼쪽에 수신을 받는 친구가 없다면 입력받은 탑이 현재 가장 높은 탑이되어버리니 다음 입력에서는 현재 입력받은 탑을 기준으로 왼쪽에 있는 탑들은 필요가 없어지는 것입니다 import Foundation let n = Int(readLine()!)! let arr = readLine()!.components(separatedBy: " ").compactMap { Int($0) } var stack: [(height: Int, index: Int)] = [(100000001, 0)] for index in 0..
2024.01.12