https://school.programmers.co.kr/learn/courses/30/lessons/160586 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr ๋จผ์ ์ ๊ฒฝ์ด ๋ถ๋ถ์ ์ฐพ์ target๋ฌธ์์ด์ค ๋ฌธ์๊ฐ ๋ง์ฝ์ ์๋ค๋ฉด -1 ๋ก ๋๋๋๊ฒ์ด๋ค. ๊ทธ๋์ keymap์ ๋ฌธ์์ด์ ๋ชจ๋ ๋ํด์, ์ฐพ์ ์ ์๋์ง ์๋์ง ๋จผ์ ํ๋ณํ๋ค. ๊ทผ๋ฐ ๊ณ์ ์ค๋ต์ด ๋์๋๊ฒ .. ! keymap ์ ์ฒด ๋ฐฐ์ด์ค ์ฐพ์์๋ ์์ด์ indexOf๋ก ์์ฐจ์ ์ผ๋ก ๊ฐ์ฅ ์์ ์์ index๋ฅผ ๊ตฌํ๋๋ฐ keymap[0] ์์๋ ํด๋น ๋ฌธ์๊ฐ ์๊ณ keymap[1] ์๋ ์์๊ฒฝ์ฐ 0์ด๋ผ๋..
๐ DFS & BFS ์ต์ข ์ ๋ฆฌ DFS : Depth First Search ๊น์ด ์ฐ์ ํ์ BFS : Breadth First Search ๋๋น ์ฐ์ ํ์ ๊ทธ๋ํ๋ฅผ ํ์ํ๊ธฐ ์ํ ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ DFS, BFS๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ์คํ, ํ, ์ฌ๊ท๋ฅผ ๋จผ์ ์์์ผํ๋ค. ํ(Queue) ์คํ๊ณผ ๋ฐ๋๋ก FIFO ๊ฐ๋ ์ผ๋ก ๋จผ์ ๋ค์ด๊ฐ ๊ฒ์ด ๋จผ์ ๋๊ฐ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. public class Main{ public static void main(String[] args) { Queue Q = new LinkedList(); Q.offer(1); Q.offer(2); Q.offer(3); Q.poll(); // 1 ์ถ๋ ฅ Q.offer(4); Q.poll(); // 2 ์ถ๋ ฅ } } ์ ์ญ ํด๋์ค Node DFS์ BF..
๐ ์คํํ๋ ์ & ์ฌ๊ทํจ์ ์คํ ํ๋ ์ ์คํ ํ๋ ์์ ๋ฉ๋ชจ๋ฆฌ์ ์คํ์์ญ์ ํจ์์ ํธ์ถ๊ณผ ๊ด๊ณ๋๋ ์ง์ญ๋ณ์์ ๋งค๊ฐ ๋ณ์๊ฐ ์ ์ฅ๋๋ ์์ญ์ด๋ค. ์คํ ์์ญ์ ํจ์์ ํธ์ถ๊ณผ ํจ๊ป ํ ๋น๋๋ฉฐ, ํจ์์ ํธ์ถ์ด ์๋ฃ๋๋ฉด ์๋ฉธํ๋ค. ํจ์๊ฐ ํธ์ถ๋๋ฉด ์คํ์๋ ํจ์์ ๋งค๊ฐ๋ณ์, ํธ์ถ์ด ๋๋ ๋ค ๋์๊ฐ๋ ๋ฐํ ์ฃผ์ ๊ฐ, ํจ์์์ ์ ์ธ๋ ์ง์ญ๋ณ์ ๋ฑ์ด ์ ์ฅ๋๋ค. ์ด๋ ๊ฒ ์คํ ์์ญ์ ์ฐจ๋ก๋๋ก ์ ์ฅ๋๋ ํจ์์ ํธ์ถ ์ ๋ณด๋ฅผ ์คํ ํ๋ ์ ์ด๋ผ๊ณ ํ๋ค. ์คํ ํ๋ ์์ ํ์ฉํ๋ฉด ํจ์์ ํธ์ถ์ด ๋ชจ๋ ๋๋ ๋ค์ ํด๋น ํจ์๊ฐ ํธ์ถ๋๊ธฐ ์ด์ ์ํ๋ก ๋๋์๊ฐ ์ ์๋ค. ์ฌ๊ทํจ์ public class Recursive { public static void main(String[] args){ Recursive T = new Recursive(); ..
๐ Comparable & Comparator - Comparable๊ณผ Comparator๋ ๋ชจ๋ ์ธํฐํ์ด์ค์ด๋ค. - ์ฆ, ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด ์ธํฐํ์ด์ค ๋ด์ ์ ์ธ๋ ๋ฉ์๋๋ฅผ ๋ฐ๋์ ๊ตฌํ ํด์ผํ๋ค. ๋ณดํต Comparable ์ธํฐํ์ด์ค์๋ compareTo(T o) ๋ฉ์๋ ํ๋๊ฐ ์ ์ธ๋์ด์๋ค. ์ด๊ฒ์ compareTo ๋ฉ์๋๋ฅผ ์ฌ์ ์(Override)ํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค. Comparator์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด compare ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผ ํ๊ณ , Comparable ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด compareTo ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผํ๋ค. โ Comparable & Comparator " ๊ฐ์ฒด๋ฅผ ๋น๊ตํ ์ ์๋๋ก ๋ง๋ ๋ค " Why ? ์๋๋ byte, int, double ๋ฑ ๋ถ๋ฑํธ๋ฅผ ํตํด ์ฝ๊ฒ ๋ ๋ณ์๋ฅผ ๋น๊ตํ ..
๐ @State @Binding Property Wrapper์ ๋ํด์ State โ PropertyWrapper ? ๋ณํ๊ฐ ์๊ธฐ๋ฉด ํด๋น ๋ณ์์ ๊ฐ์ ์ฝ๊ฑฐ๋ ์๋ก ์ธ ์ ์์์ ์๋ฏธํ๋ค. SwiftUI์์๋ property wrapper๋ฅผ ์ฌ์ฉํด์ ๋ณ์์ ๋ณํ์ ํด๋น ์์ ์ ์๋ํ ํ ์ ์๋ค. SwiftUI๋ state๋ก ์ ์ธ๋ ํ๋กํผํฐ๋ค์ ์ ์ฅ์๋ฅผ ๊ด๋ฆฌํ๋ค. StateValue ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ทฐ๋ ํด๋น value์ appearance๋ฅผ ๋ฌดํจํํ๊ณ ๋ค์ ๊ฐ์ ๊ณ์ฐํ๋ค. State ๋ณ์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด View๋ ์๋ก ๋๋๋ง์ ํ์ฌ ํญ์ ์ต์ ๊ฐ์ ๊ฐ์ง๋ค. State ์ธ์คํด์ค๋ ๊ทธ ์์ฒด๋ก ๊ฐ์ด ์๋, ๊ฐ์ ์ฝ๊ณ ์ฐ๋ ๊ฒ์ ๋งํ๋ค. ํ์ฌ ๋ทฐ UI์ ํน์ ์ํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ง๋ค์ด์ง๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ณดํต Priv..
https://school.programmers.co.kr/learn/courses/30/lessons/12915 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr 1๋ฒ ํ์ด import java.util.*; class Solution { public String[] solution(String[] strings, int n) { String[] answer = new String[strings.length]; List list = new ArrayList(); for(int i=0; i
๐ ์๋ฃ๊ตฌ์กฐ ์๋ฃ๊ตฌ์กฐ โ ๋ฐฐ์ด(Array) & ๋งํฌ๋ ๋ฆฌ์คํธ โ๏ธ Array์ LinkedList์ ์ฐจ์ด ๋ฐฐ์ด์ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ฆฌ์คํธ๋ ๋น์ฐ์์ ์ธ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ค ๋ ๋ฐ์ดํฐ๋ฅผ ๋ ธ๋๋ก ์ฐ๊ฒฐํ๋ค๋ ์ฐจ์ด์ ์ด ์๋ค. โ๏ธ Array์ LinkedList์ ํ์์๊ฐ ๋ฐฐ์ด์ index๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ ์๊ฐ๋ณต์ก๋๋ O(1)์ด๋ค. ๋ฐ๋ฉด์ ๋ฆฌ์คํธ๋ ์ฒ์๋ถํฐ ์ฐ๊ฒฐ๋ ๋ ธ๋๋ค์ ๋ฐ๋ผ๊ฐ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ผํ๊ธฐ ๋๋ฌธ์ ์ต์ ์ ๊ฒฝ์ฐ์๋ ์ฒซ ๋ ธ๋์์ ํ์์ ์์ํ๊ณ ํ์ํ ๋ ธ๋๊ฐ ๋ง์ง๋ง์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋๋ค. ๋ฐ๋ผ์ ์๊ฐ ๋ณต์ก๋๋ O(N)์ด๋ค. โ๏ธ LinkedList์์ ์ญ์ ์ฐ์ฐ์ ํ๋ ๊ณผ์ ์ญ์ ์ฐ์ฐ์ ํ๊ธฐ ์ํด์๋ ๋จผ์ ๊ฐ์ฅ ์ฒซ ๋ ธ๋๋ถํฐ ๋ฐ๋ก ๋ค์ ๋ ธ๋๊ฐ ์ญ์ ํ๊ณ ๋ ํ๋..
๐ Save Color in UserDefaults from Color Picker variable in Color Data private let COLOR_KEY = "COLOR" private let userDefaults = UserDefaults.standard saveColor func saveColor(color: Color) { let color = UIColor(color).cgColor if let components = color.components { userDefaults.set(components, forKey: COLOR_KEY) } } loadColor func loadColor() -> Color { guard let colorComponenets = userDefaults...