์๊ฐ ๊ทธ๋ผ์ด๋https://www.acmicpc.net/problem/14938 ํ์ด๋ค์ต์คํธ๋ผ 1. 1๋ถํฐ N๊น์ง BFS ๋ฐ๋ณตํ๋ฉด์ ์ต๋๊ฐ ์
๋ฐ์ดํธ2. ๋ค์ ํ์ cost ๋ํ์ ๋ ์์๋ฒ์ ์์ด๊ณ , ๋ค์ ํ์ ๊ฐฏ์๋ฅผ ๋ํ์ ๋ ํ์ฌ ์์ดํ
๊ฐฏ์๋ณด๋ค ํฌ๋ค๋ฉด ํ์ ์ถ๊ฐํ๊ธฐ3. ํ์ ๋ค์ด๊ฐ ์์ดํ
๋ค์ ์ ๋ถ ๊ฐ ์ ์์ผ๋ฏ๋ก Set๋ก ๊ด๋ฆฌ. bfs ๋๋ ํ Set์ ๋ค์ด์๋ ์์ดํ
์ ํด๋นํ๋ ๋น์ฉ ์ถ๊ฐํด์ bfs ๋ฐํ ์์ค์ฝ๋let NMR = readLine()!.split(separator: " ").map { Int($0)! }let N = NMR[0], M = NMR[1], R = NMR[2]var items: [Int] = [0]items += (readLine()!.split(separato..
๊ฐ์ ์ด์ด๊ฐ๊ธฐ2 ๋ฌธ์ https://www.acmicpc.net/problem/14284 ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํด๊ฒฐํ๋ฉด ๋๋ ๋ฌธ์ ์ด๋ค.bfs๋ก ์ํํ๋ฉฐ, dp ๋ฐฉ์์ผ๋ก ์ ๊ทผํ๋ฉด ๋๋ค. (๋ง์ ์ฝ๋ค..!) ํ์ฌ ์ ์ ๊ณผ ๋ค์ ๋ฐฉ๋ฌธํ ์ ์ ๊ณผ ๋น๊ตํ์ ๋,dp[๋ค์์ ์ ]์ ๊ฐ์ค์น๊ฐ dp[ํ์ฌ์ ์ ]์ ๊ฐ์ค์น+๋ค์ ์ ์ ๊ฐ์ค์น๋ณด๋ค ํฌ๋ฉด dp[๋ค์์ ์ ]ํ์ฌ๊ฐ์ผ๋ก ์
๋ฐ์ดํธํ๊ณ , ํ์ ์ถ๊ฐํ๋ ๊ฒ์ด ํต์ฌ์ด๋ค. ๋ค์ต์คํธ๋ผ ๋ฌธ์ ๋ฅผ ํ๋๋ ..๋ค์ต์คํธ๋ผ ๋ฌธ์ ๋ฅผ ํ ๋๋ ์๋ ๋ด์ฉ์ ๊ณ ๋ คํ๋ฉด์ ํ๋ฉด ๋๋ค. 1. dp ๋ฐฐ์ด์ ์ด๊ธฐ๊ฐ์ Int.max๋ก ๋๊ธฐ2. ๋ฐฉํฅ๊ทธ๋ํ์ธ์ง ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ธ์ง ํ์ธํด์ ๋์
๋๋ฆฌ ์
๋ฐ์ดํธ3. bfs ์์ํ ๋ ์์๊ฐ์ dp๋ 0์ด๋ ํน์ ๊ฐ์ผ๋ก ์ด๊ธฐํ4. ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ก ์ํจ5. ์ค์ํํธ๋ก b..
https://school.programmers.co.kr/learn/courses/30/lessons/64065 ํ๋ก๊ทธ๋๋จธ์ค์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์
๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์
๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.programmers.co.kr ๋ฌธ์ ์ ๋ฆฌ1. ๋ฌธ์ ์๊ตฌ์ฌํญ ์ ์ํน์ ํํ์ ํํํ๋ ์งํฉ์ด ๋ด๊ธด ๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ง ๋, s๊ฐ ํํํ๋ ํํ์ ๋ฐฐ์ด์ ๋ด์ ๋ฐํ๋ฌธ์์ด s๋ ์์๊ฐ ์์ฌ์์=> ๊ตฌํ ๊ฒ: s๊ฐ ํํํ๋ ํํ์ ๋ฐฐ์ด๋ก ๋ฐํ 2. ์ ์ฝ์ฌํญ5 โค s์ ๊ธธ์ด โค 1,000,0001 โค ํํ์ ์์ ๊ฐ์ ๋ฒ์ โค 100,000 3. ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์๊ฐ๋ณต์ก๋ ํ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ ์๊ฐ ์ ํ ํ๊ธฐ๋์ด์์ง ์์ 4. ํ์ด๋ฐฉ๋ฒ1) {,}..
https://school.programmers.co.kr/learn/courses/30/lessons/134240?language=swift ํ๋ก๊ทธ๋๋จธ์ค์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์
๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์
๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.programmers.co.kr ๋ฌธ์ ์ ๋ฆฌ1. ๋ฌธ์ ์๊ตฌ์ฌํญ ์ ์2๋ช
์ ์ ์๋ค์ด ๋ํ์์ ์ฑ
์ ์์ชฝ์์ ๊ฐ์ด๋ฐ๋ฅผ ํฅํด ์์์ ๋จน๋ ๋๊ฒฐ์ ํจ.์น๋ฆฌ ์กฐ๊ฑด: ์ค์์ ์๋ ๋ฌผ์ ๋จผ์ ๋จน๋ ์ ์ํ๊ฒฝ: ๋ ์ ์๊ฐ ๋จน๋ ์์์ ์ข
๋ฅ์ ์์ด ๊ฐ์์ผ ํจ.ํ๊ฒฝ: ๋ ์ ์๊ฐ ์์์ ๋จน๋ ์์๋ ๊ฐ์์ผ ํจ.ํ๊ฒฝ: ์นผ๋ก๋ฆฌ๊ฐ ๋ฎ์ ์์์ ๋จผ์ ๋จน์ ์ ์๊ฒ ๋ฐฐ์น.ํ๊ฒฝ: ์์
์ด๊ฐ ์ค๋นํด์จ ์์ ์ค ๋ช๊ฐ๋ ๋ํ์ ์ฌ์ฉํ์ง ๋ชปํจ.=..
https://www.acmicpc.net/problem/18352 18352๋ฒ: ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ์ฒซ์งธ ์ค์ ๋์์ ๊ฐ์ N, ๋๋ก์ ๊ฐ์ M, ๊ฑฐ๋ฆฌ ์ ๋ณด K, ์ถ๋ฐ ๋์์ ๋ฒํธ X๊ฐ ์ฃผ์ด์ง๋ค. (2 โค N โค 300,000, 1 โค M โค 1,000,000, 1 โค K โค 300,000, 1 โค X โค N) ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ๊ฑธ์ณ์ ๋ ๊ฐwww.acmicpc.net ๊ทธ๋ํ, ๋ค์ต์คํธ๋ผ ์ฐ์ต์ ํ๋ ค๊ณ ์๋ํ๋ ๋ฌธ์ ์ด๋ค.๊ธฐ์กด์ ๊ทธ๋ํ๋ฅผ ์ํํ ๋ ์๋์ฒ๋ผ ๋ง์ด ์ฌ์ฉํ์๋๋ฐ, ์๊ฐ์ด๊ณผ๊ฐ ๋์ idx๋ก ํ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์์ ํ๋ค.while let q = queue.isEmpty() ? nil : queue.removeFirst() X๋ถํฐ ํ(์ผ๋ฐ ๋ฐฐ์ด)์ ๋ฃ์ (๊ฑฐ๋ฆฌ๋ฐฐ์ดdist๋ max๊ฐ..
์ฒ์์ ์๊ฐํ๋ ํ์ด 1. ๋์
๋๋ฆฌ ์์ฑ = "์์์ ์ข
๋ฅ":["์์์ด๋ฆ"] 2. ๋ฒ์ (1...์์์ ์ข
๋ฅ ์) dp ํ
์ด๋ธ ๋ง๋ค๊ธฐ 3. dp ํ
์ด๋ธ ๊ฒฐ๊ณผ ๋ฐํ ์ด ์์๋๋ก ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๊ณ ๊ท์น์ ์ฐพ์ dp ํ
์ด๋ธ์ ๋ง๋ค์ด ํด๊ฒฐํ๋ ค ํ์๋ค.. ๊ท์น์ ์ฐพ๊ณ ์ถ์๋๋ฐ, ๊ฐ๋ง ์ค๊ณ .. ์๊ฐํ๋ ๋๋ก ํด๊ฒฐ๋์ง ์์์ "ํ๋ก๊ทธ๋๋จธ์ค์ ์ง๋ฌธํ๊ธฐ"๋ฅผ ํ์ธํด๋ดค๋๋ฐ ๋ช
์พํ ์ํ์ ํ์ด๊ฐ ์์ด์ ๊ธฐ๋กํด๋๊ณ ์ ํ๋ค. ๊ณ ๋ฑํ์ ๋ ์ด ๋ฌธ์ ๋ฅผ ๋ดค์ผ๋ฉด ์ข ๋ ๋น ๋ฅด๊ฒ ํด๊ฒฐ๋ฐฉ์์ ์์๋์ ๋ฏ ํ๋ค,,ใ
.ใ
ํด๊ฒฐ ๋ฐฉ์ ์์์ ์ข
๋ฅ 1๊ฐ์ง ์์์ผ ๊ฒฝ์ฐ ๋ฐํ๊ฐ = ์์ ๊ฐ์ (์๋๋ถํด ํธ์์ "๊ฐ์" ์๋ต) ์์์ ์ข
๋ฅ 2๊ฐ์ง ์์, ํ์์ผ ๊ฒฝ์ฐ ๋ฐํ๊ฐ = ์์ + ํ์ + ์์ * ํ์ ์์์ ์ข
๋ฅ 3๊ฐ์ง ์์, ํ์, ์ ๋ฐ์ผ ๊ฒฝ์ฐ ๋ฐ..
์๊ณ ๋ฆฌ์ฆ ์คํฐ๋ํ๋ฉด์ ์ฌ๊ท์ ๋ํด ์ ์ดํดํ๊ณ ์ฐ์ง ๋ชปํ๋ ๊ฒฝํ์ด ์๋ค. ํผ๋ณด๋์น๋ ํฉํ ๋ฆฌ์ผ ๋ฌธ์ ์ ๋๋ ๊ด์ฐฎ์๋ฐ, ์ดํด๋๊ฐ ์กฐ๊ธ ๋ถ์กฑํ์ด์ ๊ทธ ์ด์์ ์ฒดํ๋์ง ์์, ์ฝ๊ฒ ์ฌ๊ท๋ฅผ ๋ ์ฌ๋ ค ์ฌ์ฉํ์ง ๋ชปํ์๋ค. ์ด๋ฒ์ ์ฝํ
๋ฅผ ์ค๋นํ๋ฉด์, ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ํ๊ธฐ๋ณด๋จ ๋ถ์กฑํ๋ ๊ธฐ๋ณธ ๊ฐ๋
์ ๋ํด ๋ค์ ์ดํดํ๊ณ ๋์ด๊ฐ๋ณด์!๋ผ๋ ๋ง์์ผ๋ก ์์ด๊ณผ ์กฐํฉ์ ๋ค์ฌ๋ค๋ณด์๊ณ , ์์ด๊ณผ ์กฐํฉ์ ์์๊ฐ๋ฉด์ ์ฌ๊ท์ ๋ํด์๋ ์์ฐ์ค๋ ์ฒดํํ ์ ์์๋ค-!!! ์์ด (permutation) ์์ด์ด๋ ์๋ก ๋ค๋ฅธ n๊ฐ์ ์์์์ r๊ฐ๋ฅผ ์ค๋ณต ์์ด ์์๋ฅผ ๊ณ ๋ คํ์ฌ ์ ํํ๊ฑฐ๋ ๋์ดํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.(๋จ, 0 ์กฐํฉ func ์กฐํฉ(_ depth: Int, _ start: Int) { if ๋์ค๊ฐ M๊น์ง ๋๋ฌํ๋ค๋ฉด { ๊ฒฐ๊ณผ๋ฐฐ์ด ์ถ๋ ฅ } else { ์ธ..
BFS(๋๋น์ฐ์ ํ์) 1. removeFirst() ์ฌ์ฉ func bfs(graph: [[Int]], startX: Int, startY: Int) -> [Int] { var visited = Array(repeating: Array(repeating: false, count: n), count: n) var queue = [(startX, startY)] var result = [Int]() visited[startX][startY] = true while let node = queue.isEmpty ? nil : queue.removeFirst() { let x = node.0 let y = node.1 result.append(graph[x][y]) let dx = [0, 0, 1, -1] let ..
import Foundation func checkLowerCase(_ input: String) -> Bool { let lowercaseSet = CharacterSet.lowercaseLetters return input.rangeOfCharacter(from: lowercaseSet.inverted) == nil } let st = ["ss", "s1", "11", "SS", "d-"] for s in st { if checkLowerCase(s) { print(s) } } // ss https://developer.apple.com/documentation/foundation/characterset
https://www.acmicpc.net/problem/11659 11659๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4 ์ฒซ์งธ ์ค์ ์์ ๊ฐ์ N๊ณผ ํฉ์ ๊ตฌํด์ผ ํ๋ ํ์ M์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ N๊ฐ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์๋ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ์
์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์๋ ํฉ์ ๊ตฌํด์ผ ํ๋ ๊ตฌ๊ฐ i์ j www.acmicpc.net ํด๋น ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๋์ ํฉ์ ์ฒ์ ์ ํ๋ค. ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๊ฐ์ ๊ณ์ฐํด์ ์ ์ฅํด์ ๊บผ๋ด์ ์ฌ์ฉํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ๋ค์๋๋ฐ, ์ ํํ ํด๊ฒฐ๋ฐฉ๋ฒ์ด ๋์ ํฉ!์ธ์ง๋ ๋ชฐ๋๋ค..! ๋์ ํฉ์ ๋ํด ์์๋ณด์! ๋์ ํฉ ํน์ ๊ตฌ๊ฐ์ ํฉ์ ์ฐพ๋๋ฐ ์ ์ฉํ ์๊ณ ๋ฆฌ์ฆ ๋์ ํฉ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ์๋ ์์๋ค์ ํฉ์ ๋น ๋ฅด๊ฒ ๊ณ์ฐํ๋ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค. ๋ฐฐ์ด๊ณผ ๊ฐ์ ์ํ์ค ๋ฐ์ดํฐ์์ ์ผ๋ถ ๊ตฌ๊ฐ์ ํฉ์ ์ฐพ๋ ๋ฐ ์ฌ..
'๐ Algorithm' ์นดํ
๊ณ ๋ฆฌ์ ๊ธ ๋ชฉ๋ก
๋ซ๊ธฐ
๋จ์ถํค
๋ด ๋ธ๋ก๊ทธ
๋ด ๋ธ๋ก๊ทธ - ๊ด๋ฆฌ์ ํ ์ ํ
Q
Q
์ ๊ธ ์ฐ๊ธฐ
W
W
๋ธ๋ก๊ทธ ๊ฒ์๊ธ
๊ธ ์์ (๊ถํ ์๋ ๊ฒฝ์ฐ)
E
E
๋๊ธ ์์ญ์ผ๋ก ์ด๋
C
C
๋ชจ๋ ์์ญ
์ด ํ์ด์ง์ URL ๋ณต์ฌ
S
S
๋งจ ์๋ก ์ด๋
T
T
ํฐ์คํ ๋ฆฌ ํ ์ด๋
H
H
๋จ์ถํค ์๋ด
Shift + /
โง + /
* ๋จ์ถํค๋ ํ๊ธ/์๋ฌธ ๋์๋ฌธ์๋ก ์ด์ฉ ๊ฐ๋ฅํ๋ฉฐ, ํฐ์คํ ๋ฆฌ ๊ธฐ๋ณธ ๋๋ฉ์ธ์์๋ง ๋์ํฉ๋๋ค.