๐Ÿ“ Algorithm

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๋Š” ma..
์ฒ˜์Œ์— ์ƒ๊ฐํ–ˆ๋˜ ํ’€์ด 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 ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋ˆ„์ ํ•ฉ์„ ์ฒ˜์Œ ์ ‘ํ–ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ๊ฐ’์„ ๊ณ„์‚ฐํ•ด์„œ ์ €์žฅํ•ด์„œ ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์€ ๋“ค์—ˆ๋Š”๋ฐ, ์ •ํ™•ํ•œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ด ๋ˆ„์ ‘ํ•ฉ!์ธ์ง€๋Š” ๋ชฐ๋ž๋‹ค..! ๋ˆ„์ ํ•ฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž! ๋ˆ„์ ํ•ฉ ํŠน์ • ๊ตฌ๊ฐ„์˜ ํ•ฉ์„ ์ฐพ๋Š”๋ฐ ์œ ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ˆ„์ ํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์—ฐ์†๋œ ์›์†Œ๋“ค์˜ ํ•ฉ์„ ๋น ๋ฅด๊ฒŒ ๊ณ„์‚ฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ์‹œํ€€์Šค ๋ฐ์ดํ„ฐ์—์„œ ์ผ๋ถ€ ๊ตฌ๊ฐ„์˜ ํ•ฉ์„ ์ฐพ๋Š” ๋ฐ ์‚ฌ..
JINiOS
'๐Ÿ“ Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก