Programming
BOJ: #14502 - ์ฐ๊ตฌ์
BOJ: #14502 - ์ฐ๊ตฌ์
2021.04.29์ค๊ฐ๋ถํฐ ์๊ฐ ์ฌ๋ค๊ฐ ๋ง์์ง๋ง, ๊ฑฐ์ ๋ค์ฏ์๊ฐ ๊ฐ๊น์ด ๋ถ์ก์๋ค. ใ
ใ
ํ๊ธฐ ์์ํ ์ง ๋ ์๊ฐ์ด ์ง๋ฌ์ ๋ ์ฏ์์ ์ฌ๋์ ๋ฌผ์ด๋ดค๊ณ ๋ ๊ฐ์ง ์กฐ์ธ์ ๋ค์๋ค. board ์ ์ฒด๋ฅผ ๋๋ฉด์ 2๊ฐ ๋์ฌ ๋๋ง๋ค BFS๋ฅผ ๋๋ฆฌ๋ ๊ฒ ๋ณด๋ค 2๊ฐ ์๋ ์์น๋ฅผ ๋ฏธ๋ฆฌ ์ ์ฅํด๋๊ณ BFS๋ฅผ ๋๋ฆฌ๋ ๊ฒ ๋ ๋ซ๋ค. !visited.contains([nx, ny])์ ์๊ฐ ๋ณต์ก๋๊ฐ O(N)์ด๋ฏ๋ก ๋ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ๊ฟ๋ผ. ์กฐ์ธ ํด์ฃผ์ ๋๋ก 1, 2๋ฅผ ์์ ํ๋ค. 2๊ฐ ์๋ ์์น๋ฅผ virusLocation์ ์ ์ฅํ๋ค. visited๋ฅผ Set์ผ๋ก ๋ณ๊ฒฝํ๋ค. Set.contains()์ ์๊ฐ ๋ณต์ก๋๋ O(1) ๋ก์ปฌ์์๋ ๋์ ๋๊ฒ ์ฑ๋ฅ ํฅ์์ด ์์์ง๋ง ์ฌ์ ํ ๋ฐฑ์ค์์๋ ์๊ฐ ์ด๊ณผ์๋ค. ๊ทธ๋์ ์ค์ํํธ๋ก ํต๊ณผํ์ ๋ถ์ ํ์ด๋ฅผ ..
Programmers: ๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ
Programmers: ๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ
2021.04.28์ ๋ ฌ์ ์ ๋นํ ์กฐ๊ฑด์ ์ฃผ์ด์ ํธ๋๋ฐ, ๋ฌธ์์ด์ ์ธ๋ฑ์ค๋ก ์ง์ ์ ๊ทผ์ด ์๋์ ๋ฐฐ์ด๋ก ๋ณํํด์ ์ ๊ทผ, ๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ํ์๋ค. ์ด๋ฐ ๋ฌธ์์ด๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ํ ๋๋ฉด, ํ์ด์ฌ์ผ๋ก ํธ๋ ๊ฒ ์ข ๋ ์ฌ์ด ๊ฑฐ ๊ฐ๋ค. ๋ฌธ์ https://programmers.co.kr/learn/courses/30/lessons/12915?language=swift ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift func solution(_ strings:[String], _ n:Int) -> [String] { let answer = strings.sorted(by: { if Array($0)[n] == Array($1)[n] { return $0 < $1 } return Array($0)[n] < Array($1)[n] }) return answ..
Programmers: K๋ฒ์งธ ์
Programmers: K๋ฒ์งธ ์
2021.04.27๋จ์๋ฌด์ํ๊ฒ commands ๋ฐฐ์ด ์ํํ๋ฉด์ ์๊ตฌ ์ฌํญ๋๋ก ๋ง์ถฐ์ ์ฝ๋ฉํ๋ค. ์์ ์ ํ์๋ ํ์ด์ฌ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์์ฒญ ๊ฐ๊ฒฐํ๊ฒ ํด๋จ๋๋ฐ, ์ค์ํํธ๋ก๋ ๊ทธ๋ ๊ฒ ๊ตฌํํ๋ ค๋ฉด subscript๋ฅผ ๊ตฌํํ๋ฉด ๋ ๊ฑฐ ๊ฐ์๋ฐ ์ผ๋จ์ ํจ์ค. ๋ฌธ์ https://programmers.co.kr/learn/courses/30/lessons/42748?language=swift ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift import Foundation func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] { var answer = [Int]() for command in commands { let i = command[0]-1 let j = command[1]-1 let k = command..
Programmers: ๋ฐฉ๋ฌธ ๊ธธ์ด
Programmers: ๋ฐฉ๋ฌธ ๊ธธ์ด
2021.04.2719:15 16:14์ ์ด์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ์ด ๋ ์คํํ ์ฝ๋๋ 1~8๋ฒ๊น์ง๋ ๋ง์์ผ๋ ๊ทธ ์ดํ์ ํ
์คํธ์์๋ ์คํจํ๋ค. ๊ทธ๋์ ์ง๋ฌธ ๊ฒ์ํ์ ์ฐธ๊ณ ํ์๊ณ , UDU์ ๊ฒฝ์ฐ๊ฐ 1์ด ๋์์ผ ํ๋ค๋ ๊ธ์ ๋ณด๊ณ ์์ฑ์์ผฐ๋ค. Xcode๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ํ๋ก๊ทธ๋๋จธ์ค์์ ์ง์ ํ์๋ค. dirs๋ฅผ ์ํํ๋ฉด์ dir์ ๊ฐ์ ๋ฐ๋ผ ๋์์ ์ฒ๋ฆฌํ๋ค. enumerated()๋ ๋๋ฒ๊น
ํ๋ ค๊ณ ์ด ๊ฑฐ๋ผ ๊ตณ์ด ํ์ ์์ ~= ์ฐ์ฐ์๋ฅผ ์ด์ฉํด ๋ฒ์๋ฅผ ํ์ธํ๊ณ , ํด๋น ๋ฒ์์ ์ผ์นํ๋ฉด ๋์ ์ํ. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์ dir๋ก ๋์ด๊ฐ๋ค. ์ ๊ฐ๋ณธ ๊ธธ๋ง visited ๋ฐฐ์ด์ ๋ฃ์ด์ค๋ค. ์ด๊ฒ์ ํ์ธํ๊ธฐ ์ํด, ํ์ฌ ์์น์ ์ด์ ์์น๋ฅผ ๋ชจ๋ ์ ์ฅํ๋ค. ์ฒ์์๋ ์ด๋ ๊ฒ๋ง ํ์ธํ๋ค. if !visited.contains([curX, curY, ..
Swift: ๊ธ์ ์ ์ธ Guard ์ฌ์ฉ
Swift: ๊ธ์ ์ ์ธ Guard ์ฌ์ฉ
2021.04.25๋ ์ธ ์ค์ํํธ 30ํธ๋ฅผ ์ฝ๋ค๊ฐ, ์๋ฟ๋ ๋ถ๋ถ์ด ์์ด์ ์์ฝ, ์ ๋ฆฌํ๋ค. ์๊ณ ๋ฆฌ์ฆ ํ ๋๋ ๋น์ทํ๊ฒ ๋ง์ด ์ฐ๋๋ฐ (while !queue.isEmpty) ์ด๊ฑธ ์ฝ๊ณ ์ ๊ณ ์ณ์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. Use Positive Guards guard ํค์๋์ ์ฃผ์ ์ฉ๋ ๊ณ์ฐ์ ํ์ํ ์ต์
์ ์ธ๋ฉํ ๊ธฐ๋ฅ์ ๋ํ ์ ์ ์กฐ๊ฑด์ ๋ช
์ ์ฌ๊ธฐ์๋ ๋ ๋ฒ์งธ ์ฉ๋์ ๋ํด ์ค๋ช
ํ๋ค. guard !pieces.isEmpty else { return } ์ ์ฝ๋๋ ๋ ๊ฐ์ง ๋จ์ ์ด ์๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ → !๋ฅผ ์๊ธฐ ์ฝ๋ค. ๋ด์ฌํํ๊ธฐ ์ด๋ ต๋ค. ์กฐ๊ฑด์ ์ฝ์ ๋, ์ฝ๋์ ์๋ฏธ๋ฅผ ์ ๋๋ก ์ดํดํ๊ธฐ ์ํด ์ฝ์ ๋จ์ด์ ์๋ฏธ๋ฅผ ๋ค์ง์ด์ผ ํ๋ค. Collection ํ๋กํ ์ฝ์ ์ฌ์ํ ๋์ฐ๋ฏธ๋ฅผ ์ถ๊ฐํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค. extens..
Programmers: ํ์ค๋ ์
Programmers: ํ์ค๋ ์
2021.04.24๋งค๊ฐ๋ณ์๋ก ๋ค์ด์จ x๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ ๋ค, map์ผ๋ก ๋ค์ Int ํ๋ณํํด์ ๊ฐ๊ฐ ๋ค ๋ํ ํ ๋๋จธ์ง๊ฐ ์๋์ง ์๋์ง ์ฌ๋ถ์ ๋ฐ๋ผ ๋ฐํ๊ฐ์ ๋ฌ๋ฆฌ ํ๋ฉด ๋๋ค. ๋ฌธ์ https://programmers.co.kr/learn/courses/30/lessons/12947 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift func solution(_ x:Int) -> Bool { let h = String(x).map { Int(String($0))! }.reduce(0, +) return x % h == 0 ? true : false }
Programmers: ์์ ์ฐพ๊ธฐ
Programmers: ์์ ์ฐพ๊ธฐ
2021.04.23์ ์ ํ ๋ฌธ์์ด ์ฒ๋ฆฌ์ ์กฐํฉ์ ๊ตฌํด์ ์ค๋ณต ๊ฑฐ๋ฅด๊ณ , ์์ ์ฐพ์ผ๋ฉด ๋ ๋ฌธ์ https://programmers.co.kr/learn/courses/30/lessons/42839# ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift import Foundation func isPrime(_ n: Int) -> Bool { if n < 2 { // 2๋ณด๋ค ์์ผ๋ฉด ์์๊ฐ ์๋ return false } for i in 2.. Int { var picked = [String]() var results = Set() var nums = Array(numbers).map { String($0) } let m = nums.count var visited = Array(repeating: false, count: m+1) /* n: ์ ์ฒด ์์์..
BOJ: #15657 - N๊ณผ M (8)
BOJ: #15657 - N๊ณผ M (8)
2021.04.2305:04 N๊ณผ M ์๋ฆฌ์ฆ๋ฅผ ์ฐจ๋ก๋๋ก ์ญ์ฑ ํ๋ฉด์ ์ ์ ์ ๋ต ๋น์จ์ด ๋์์ง๊ธธ๋ ์ ๊ทธ๋ฐ๊ฐ ํ๋๋, ์ฌ๋๋ค์ด ์๋ฆฌ์ฆ ์์๋๋ก ํ๋ฉด์ ์ ํ์ ํ์
ํด์ ์ ๋ต์จ์ด ๋์๋ค๋ ๊ฑธ ์์๋ค. ์๋๋ฉด ๋ด๊ฐ ์ง๊ธ ๊ทธ๋ฌ๊ณ ์๊ธฐ ๋๋ฌธ์…. ์ด์ ์ฝ๊ฐ ๋ฐฑํธ๋ํน์ ๊ฐ์ด ์กํ๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/15657 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let input = readLine()!.split(separator: " ").map { Int(String($0))! } let n = input[0] let m = input[1] let nums = readLine()!.split(separator: " ").map { Int(String($0))! }.sorted() var picked = [S..
BOJ: #15656 - N๊ณผ M (7)
BOJ: #15656 - N๊ณผ M (7)
2021.04.2306:47 ์ด ๋ฌธ์ ๋ ์๋ toPick == 0์ผ ๋ picked๋ฅผ ๋ฐ๋ก ์ถ๋ ฅํ๊ฒ ํ์๋๋ฐ, ์ด๋ ๊ฒ ์ ์ถํ๋ฉด ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค. ๊ทธ๋์ ํน์ ํ๋ ๋ง์์, ๋ฌธ์์ด๋ก ์ ์ฅํด์ ํ ๋ฒ์ ์ถ๋ ฅํ๋๋ ํต๊ณผ. ๋ฌธ์ https://www.acmicpc.net/problem/15656 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let input = readLine()!.split(separator: " ").map { Int(String($0))! } let n = input[0] let m = input[1] let nums = readLine()!.split(separator: " ").map { Int(String($0))! }.sorted() var picked = [String]() var result = "" /* n: ..
BOJ: #15655 - N๊ณผ M (6)
BOJ: #15655 - N๊ณผ M (6)
2021.04.2304:23 N๊ณผ M (1) ~ (5) ๋ฌธ์ ๋ ์ข
๋ง๋ถ์์ ๋์จ ์ฝ๋๋ฅผ ํ์ฉํด์ ํ์๋ค. (1)์ ํผ ์ฝ๋๋ก (2)๋ฅผ ํ๊ณ , (3)์ ํ๊ณ … ์ด๋ฐ์์ผ๋ก ๋ฒ ์ด์ค ์ฝ๋์์ ์ ๋ถ ์ง์ฐ๊ณ ์ฒ์๋ถํฐ ํ์ง ์๊ณ ์์ฉํด๋๊ฐ๋๋ฐ, (6)์ ์์ ๋ฒ ์ด์ค ์ฝ๋๋ฅผ ์ง์ฐ๊ณ ํ์๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/15655 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let input = readLine()!.split(separator: " ").map { Int(String($0))! } let n = input[0] let m = input[1] let nums = readLine()!.split(separator: " ").map { Int(String($0))! }.sorted() var picked = ..
BOJ: #15654 - N๊ณผ M (5)
BOJ: #15654 - N๊ณผ M (5)
2021.04.23์ค๋ณต์์ด ๋ฐฉ๋ฌธ ํด์ผํ๋ค๋ ์ ์์ N๊ณผ M (1)๊ณผ ๋์ผํ๊ฒ visited ๋ณ์๋ฅผ ์ด์ฉํด์ ์ฒดํฌํ๋ฉด ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ฌธ์ ๋ ์์ฐจ์ ์ธ ์ซ์์ ์กฐํฉ์ ๊ตฌํ๋ ๊ฒ์ด ์๋๋ผ ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์ซ์๋ค์ ์กฐํฉ์ ๊ตฌํด์ผํ๊ธฐ ๋๋ฌธ์, ๋ฐฐ์ด ๋์ ๋์
๋๋ฆฌ๋ฅผ ์ด์ฉํด ํ์๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/15654 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let input = readLine()!.split(separator: " ").map { Int(String($0))! } let n = input[0] let m = input[1] let nums = readLine()!.split(separator: " ").map { Int(String($0))! }.sorted() var picked = [..
BOJ: #15652 - N๊ณผ M (4)
BOJ: #15652 - N๊ณผ M (4)
2021.04.23N๊ณผ M (3) ๋ฌธ์ ์์ ํ๊ฐ์ง ์์ธ๋ง ์ฒ๋ฆฌํด์ฃผ๋ฉด ํ๋ฆฐ๋ค. ๋ฐ๋ก ์ง์ ์ ๊ณ ๋ฅธ ์ซ์๋ณด๋ค ํ์ฌ ์ซ์๊ฐ ์์ ๊ฒฝ์ฐ(= ๋น๋ด๋ฆผ์ฐจ์) ํด๋น ์ซ์๋ ๊ฑด๋๋ด๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/15652 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let input = readLine()!.split(separator: " ").map { Int(String($0))! } let n = input[0] let m = input[1] var picked = [String]() /* n: ์ ์ฒด ์์์ ์ picked: ์ง๊ธ๊น์ง ๊ณ ๋ฅธ ์์๋ค์ ๋ฒํธ toPick: ๋ ๊ณ ๋ฅผ ์์์ ์ ์ผ ๋, ์์ผ๋ก toPick๊ฐ์ ์์๋ฅผ ๊ณ ๋ฅด๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ์ถ๋ ฅํ๋ค */ func pick(n: Int, toPick: Int)..