Programming/Algorithm
BOJ: #1759 - ์ํธ ๋ง๋ค๊ธฐ
BOJ: #1759 - ์ํธ ๋ง๋ค๊ธฐ
2021.05.0423:52 ์ฒ์์๋ ๋ชจ์์ ๊ฐ์๋ง ์ฒดํฌํ๋๋ฐ, ์์์ ๊ฐ์๋ ์ฒดํฌํด์ผ ํ๋ค๋ ๊ฑธ ๋ณด๊ณ .. ์์ ํ๋๋ ํต๊ณผ. ์ค๋ณต์ด ์์ด์ผ ํ๋๊น visited ๋ณ์๋ก ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ ํ์ธ ์ํธ์์ ์ฆ๊ฐํ๋ ์์๋๋ก๋ง ๋์ฌ ์ ์๋ค๊ณ ํด์ ascii ๊ฐ์ผ๋ก ํ์ธ ๋ฌธ์ https://www.acmicpc.net/problem/1759 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let x = readLine()!.split(separator: " ").map { Int(String($0))! } let l = x[0] let c = x[1] let alpha = readLine()!.split(separator: " ").map { String($0) } var picked = [String]() var results = [String]() ..
BOJ: #1182 - ๋ถ๋ถ์์ด์ ํฉ
BOJ: #1182 - ๋ถ๋ถ์์ด์ ํฉ
2021.05.01๋๋ ์ด๋ค ์ ํ์ ์ ํํ๋ ์ฝ๋๋ฅผ ์ธ์ฐ๋ฉด, ๋๋ถ๋ถ์ ๋ฌธ์ ๋ฅผ ๊ทธ ๋ฐฉ์์ ์์ฉํด์ ํผ๋ค. ๊ทธ๋์ ์ด ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ ๋นํจ์จ์ ์ธ ์ฝ๋๊ฐ ๋์๋ค. ์๊ฐ์ ๋ณด๋ ๋ค๋ฅธ ๋ถ์ ๋นํด ์ฝ 50๋ฐฐ๊ฐ ๋๋ ธ๋ค(…). ๊ทธ๋์ ๋ ๊ฐ๊ฒฐํ ์ฝ๋๊ฐ ๊ถ๊ธํด์ ์ดํด๋ณด์๋๋ฐ, ๊ตณ์ด ๋ฐฐ์ด์ ์ฐ์ง ์๊ณ , ๋ณ์์ ์ ์ฅํด์ ์ฌ๊ท๋ฅผ ๋๊ธฐ๊ณ (?), ํ๋ ๋ฐฉ์์ผ๋ก ํ๋๋ผ. ์๋ฌดํผ ์ด๊ฑด ๋์ค์ ๋ค์ ํ์ด๋ด์ผ๊ฒ ๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/1182 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let input = readLine()!.split(separator: " ").map { Int(String($0))! } let n = input[0] let target = input[1] let nums = readLine()!.s..
BOJ: #2573 - ๋น์ฐ
BOJ: #2573 - ๋น์ฐ
2021.04.3027:09 ๋ ๋ฌ ์ ์ ์๋ํ์ ๋๋ ๋ชป ํ์๋๋ฐ, ์ค๋ ๋ค์ ํ์๋๋ฐ ํต๊ณผํ๋ค. ๊ฐ๋์ ๋๋ฌผ…. ๋ฐํํ. ๋
น์ด๊ณ , ๋ฉ์ด๋ฆฌ ๊ฐ์๋ฅผ ์ธ์ ํ์ธํ๋ฉด ๋๋ค. ์ด์ ๋ณด๋, ์์ ์ ์ฝ๋ ๋๋น 2๋ฐฐ ์ ๋ ์ค์ด๋ค์๋ค. ใ
0ใ
๋ฌธ์ https://www.acmicpc.net/problem/2573 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let size = readLine()!.split(separator: " ").map { Int(String($0))! } let col = size[0] let row = size[1] let direction = [(1, 0), (0, 1), (-1, 0), (0, -1)] var board = [[Int]]() for _ in 0..
BOJ: #15686 - ์นํจ ๋ฐฐ๋ฌ
BOJ: #15686 - ์นํจ ๋ฐฐ๋ฌ
2021.04.29ใ
..ใ
ใ
ใ
… ์ ๋ฐ!!!!!!!! ์ง๋ฌธ ์ข ์ ์ฝ์!!!!!!!!!!!!!! ์์์ ๋ ์นธ (r1, c1)๊ณผ (r2, c2) ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ |r1-r2| + |c1-c2|๋ก ๊ตฌํ๋ค. (r1, c1), (r2, c2)๋ฅผ (r1, r2), (c1, c2)๋ก ์ฝ์ด์ ์ฝ์ง ์ค์ง๊ฒ ํ๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/15686 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let input = readLine()!.split(separator: " ").map { Int(String($0))! } let n = input[0] let m = input[1] var board = [[Int]]() var chicken = [(Int, Int)]() var house = [(Int, Int)]() f..
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, ..
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: ..