๐All Posts
RxSwift: UITextField.text์ ๋ณ๊ฒฝ์ ๊ฐ์งํ์ง ๋ชปํ ๋
RxSwift: UITextField.text์ ๋ณ๊ฒฝ์ ๊ฐ์งํ์ง ๋ชปํ ๋
2021.06.02ํ์ฌ ํ๊ณ ์๋ ํ ์ด ํ๋ก์ ํธ์์ ์ฌ์ฉ์์๊ฒ ์ด๋ชจ์ง๋ฅผ ์
๋ ฅ๋ฐ๋๋ค. ์ผ๋ฐ์ ์ธ ํค๋ณด๋๋ก ์
๋ ฅ๋ฐ๋ ๊ฒ์ด ์๋๋ผ ISEmojiView ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ EmojiViewDelegate๋ฅผ ๊ตฌํํด์ผ ํ๋ค. ๊ทธ์ค์์ ํต์ฌ์ ์ด ๋ถ๋ถ์ด๋ค. // callback when tap a emoji on keyboard func emojiViewDidSelectEmoji(_ emoji: String, emojiView: EmojiView) { textView.insertText(emoji) } ๋๋ ๋ฑ ํ๋์ ์ด๋ชจ์ง๋ง ์
๋ ฅ๋ฐ๊ณ ์ถ์ด์, insertText()๋ฅผ ํธ์ถํ๋ ๋์ ์ emojiField.text = emoji๋ก ๋ณ๊ฒฝํ๋ค. ๊ทธ๋ฐ๋ฐ, ์ฌ๊ธฐ์ ๋ฌธ์ ์ ์ด ์๊ฒผ๋๋ฐ emojiField์ ๋ฐ์ธ๋ ํ P..
RxSwift: Single, Maybe, Completable
RxSwift: Single, Maybe, Completable
2021.06.02Single Single ์ ํน์ํ Observable ์ด๋ค. .success(Value) ์ด๋ฒคํธ ๋๋ .error ์ค ํ ๋ฒ๋ง ๋ด๋ณด๋ผ ์ ์๋ ์ํ์ค๋ฅผ ๋ํ๋ธ๋ค. ๋ด๋ถ์ ์ผ๋ก .success ๋ .next + .completed ๋ก ์ด๋ฃจ์ด์ ธ์๋ค. ์ด๋ฌํ ์ข
๋ฅ์ ํน์ฑ์ ํ์ผ ์ ์ฅ, ํ์ผ ๋ค์ด๋ก๋, ๋์คํฌ์์ ๋ฐ์ดํฐ ๋ก๋ ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ ์์ฑํ๋ ๋ชจ๋ ๋น๋๊ธฐ ์์
๊ณผ ๊ฐ์ ์ํฉ์์ ์ ์ฉํ๋ค. ์ฑ๊ณต ์ ์ ํํ ํ๋์ ์์๋ฅผ ๋ด๋ณด๋ด๋ ๋ํ ์์
์ ์ฌ์ฉ๋๋ค. ์ํ์ค์์ ๋จ์ผ ์์๋ฅผ ์ฌ์ฉํ๋ ค๋ ์๋๋ฅผ ๋ ์ ํํํ๊ณ ์ํ์ค๊ฐ ๋ ์ด์์ ์์๋ฅผ ๋ฐฉ์ถํ๋์ง ํ์ธํ๊ธฐ ์ํด ๊ตฌ๋
์ค๋ฅ๊ฐ ๋ฐ์๋๋ค. Maybe Observable์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด ๊ฐ์ ๋ฐฉ์ถํ์ง ์์ ์ ์๋ค๋ ์ ์ผํ ์ฐจ์ด์ ์ ์ ์ธํ๊ณ ๋ Single ..
BOJ: #15663 - N๊ณผ M (9)
BOJ: #15663 - N๊ณผ M (9)
2021.05.18๊ฐ์ ์๋ฅผ ๋ฐ๋ณตํด์ ๋ฐฉ๋ฌธํ์ง ์๊ธฐ ์ํด visited๋ก ์ฒดํฌ ์ค๋ณต ์์ด์ ๊ฑฐ๋ฅด๊ธฐ ์ํด Set ํ์
์ผ๋ก ์ ์ฅ ์ค์: String ๋ฐฐ์ด ์ ๋ ฌ์ ์๊ฐ ์ฆ๊ฐํ๋ ์์๊ฐ ์๋! ๋ฐ๋ผ์ ์๊ฐ ์ฆ๊ฐํ๋ ์์๋ก ์ ๋ ฌํ ์ ์๊ฒ ๋ณ๋์ ์ฒ๋ฆฌ๊ฐ ํ์ํจ let sortedResult = result.sorted(by: { $0.localizedStandardCompare($1) == .orderedAscending}) ๋ฌธ์ https://www.acmicpc.net/problem/15663 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift import Foundation var fileio = FileIO() let n = fileio.readInt() let m = fileio.readInt() var nums = [Int]() for _ i..
BOJ: #3048 - ๊ฐ๋ฏธ
BOJ: #3048 - ๊ฐ๋ฏธ
2021.05.16๋ ๊ทธ๋ฃน์ ๋ํ ๋, ํํ์ ์ด์ฉํด์ ๋ฐฉํฅ์ ๊ฐ์ด ์ ์ฅํ๋ค. false๋ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ, true๋ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ ๊ฐ๋ฏธ๋ฅผ ๋ปํ๋ค. ์ฒ์์ ์ด์ค for๋ฌธ์ ์ด์ฉํ๋๋ฐ, ๊ฐ๋ฏธ๋ค์ ์ค์ํ๋ ๊ฒฝ์ฐ i๋ฅผ ํ ๋ฒ ๋ ๊ฑด๋๋ฐ์ด์ผ ํด์ while๋ฌธ์ผ๋ก ๋ณ๊ฒฝํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ก ๋ฐฉํฅ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ์ ์ ๋ถ ์ค์ํด์คฌ์๋๋ฐ, 7% ์ฏค์์ ํ๋ ค์ ๋ค๋ฅธ ํ์ด๋ฅผ ์ฐพ์๋ดค๋ค. ์ผ์ชฝ์ผ๋ก ์ด๋ํ๊ณ ์๋ ๊ฐ๋ฏธ๋ ๋ง๋ ๊ฒฝ์ฐ์๋ ๋ฐ๊ฟ์ค ํ์๊ฐ ์๋ค๋ ๊ฑฐ์๋ค. (←, →) ์๋ก ๋ง๋์ง ์์ผ๋๊น! ๊ทธ๋์ ์์ ์๋ ๊ฐ๋ฏธ๊ฐ ์ค๋ฅธ์ชฝ์ ๋ณด๊ณ ์์ ๋ ์กฐ๊ฑด๋ ์ถ๊ฐํ๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/3048 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift let n = readLine()!.split(separator: " ")..
BOJ: #1543 - ๋ฌธ์ ๊ฒ์
BOJ: #1543 - ๋ฌธ์ ๊ฒ์
2021.05.16๋ฌธ์์ด์ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ๊ธฐ ์์ subscript๋ฅผ ์ต์คํ
์
์ผ๋ก ๊ตฌํํ๋ค. ํน์ ๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ๋ณํํด์ ํ์ด๋ ๋๋ค. ๋๋ ๋ ๊ฐ์ ์ปค์(๋ฌธ์์ด ์ปค์, ํจํด ์ปค์)๋ฅผ ์ด์ฉํด ํ์๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/1543 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift extension String { subscript(offset: Int) -> String { get { let index = String.Index(utf16Offset: offset, in: self) return String(self[index]) } } } let str = readLine()! let pattern = readLine()! let n = str.count let m = pattern.count va..
RxSwift: ํ์ต ์ ๋ฆฌ
RxSwift: ํ์ต ์ ๋ฆฌ
2021.05.14์ต์ ๋ฒ ํจํด 1:N ๊ด๊ณ๋ก ์ด๋ฃจ์ด์ง, ๊ด์ฐฐ ํจํด ๊ฐ์ฒด๋ฅผ ๊ตฌ๋
ํ๋ฉด ์ต์ ๋ฒ๊ฐ ์ํ๋ฅผ ์๋ ค์ค ํจ์ํ ํ๋ก๊ทธ๋๋ฐ 1๊ธ ๊ฐ์ฒด ๋ณ์๋ ์์์ ์ ์ฅ์ ํ ์ ์์ด์ผ ํจ ํจ์์์ return ํ ์ ์์ด์ผ ํจ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ ์ ์์ด์ผ ํจ ์์ ํจ์ /* ํ์จ ๊ณ์ฐํด์ฃผ๋ ํ๋ก๊ทธ๋จ ์ด ์ฝ๋๋ ์์ ํจ์๋ผ๊ณ ํ ์ ์๋ค. → ์ ์ญ ์ํ์ ์์กด = ์ฐธ์กฐ ํฌ๋ช
์ฑ์ด ์๋ค */ var rate = 1120 func krw(usd: Int) -> Int { return usd * rate } krw(usd: 2) // 2240 krw(usd: 3) // 3360 rate = 1130 krw(usd: 2) // 2260 krw(usd: 3) // 3390 ReactiveX ๊ด์ฐฐ ๊ฐ๋ฅํ ์คํธ๋ฆผ์ ์ด์ฉํ ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ API Re..
Programmers: ๋คํธ์ํฌ
Programmers: ๋คํธ์ํฌ
2021.05.14๋ฌธ์ ๋
ํด๋ฅผ ์๋ชปํด์ ํท๊ฐ๋ ธ๋ ๋ฌธ์ . ์ฌํ bfs/dfs ๋ฌธ์ ๋ ๋น์ทํ๊ฒ ํธ๋๋ฐ, ๋ฐ๊นฅ์์ ๋ชจ๋ ์ปดํจํฐ๋ฅผ ์ํํ๋ฉด์ ํ ๋ฒ์ด๋ผ๋ ๋ฐฉ๋ฌธํ ๊ณณ์ visited ๋ณ์์ ๋ด์ ์ฒดํฌํ๋ค. ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๊ณณ์ ์ปดํจํฐ๋ผ๋ฆฌ ์ฐ๊ฒฐ๋์๋ค๋ ๋ป์ด๋๊น ใ
ใ
๋ฌธ์ https://programmers.co.kr/learn/courses/30/lessons/43162 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift import Foundation func solution(_ n:Int, _ computers:[[Int]]) -> Int { var graph = [Int: [Int]]() for i in 0..
LeetCode: Letter Combinations of a Phone Number
LeetCode: Letter Combinations of a Phone Number
2021.05.13์
๋ ฅ์ผ๋ก ๋ค์ด์จ digits์ letter์ ์ ๊ทผํ๊ธฐ ์ํ ์ธ๋ฑ์ค๋ก ๋ณํํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฑํธ๋ํน์ผ๋ก ๋ฌธ์ ์กฐํฉ์ ๊ตฌํ๋ฉด ๋๋ค. ๋ค๋ฅธ ์กฐํฉ ๋ฌธ์ ์ ํฌ๊ฒ ๋ค๋ฅผ ๊ฒ ์์ ๋ฌธ์ https://leetcode.com/problems/letter-combinations-of-a-phone-number/ ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift class Solution { func letterCombinations(_ digits: String) -> [String] { let letter: [[Character]] = [ ["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"], ["j", "k", "l"], ["m", "n", "o"], ["p", "q", "r", "s"], ["t", "u"..
ํ ๊ถ์ผ๋ก ๋๋ด๋ Node & Express 2ํ
ํ ๊ถ์ผ๋ก ๋๋ด๋ Node & Express 2ํ
2021.05.12ํ ๊ถ์ผ๋ก ๋๋ด๋ Node & Express 2ํ - ์์ธ ์ ๋ณด ์ฒ์ ์ฑ
์ ๋ฐ์์ ๋ ์๊ฐํ ๊ฒ๋ณด๋ค ์์๋ค. ์ฑ
์ ๋๊ป๊ฐ ๋ด์ฉ์ ๊น์ด๋ฅผ ๊ฐ๋ ํ๋ ์ฒ๋๋ ์๋์ง๋ง, ์๋ฌด๋๋ ์ฌ๋ฆฌ์ ์ผ๋ก ๋ ๋ถ๋ด์ค๋ฌ์์ ์ข์๋ค. ์ถํ์ฌ ์ํ์๋ ๋์ ์์ง๋ง, ์์ ! ์
๋ฌธ์๋ฅผ ์ํ ์ฑ
์ ์๋๋ค. ์ ์ ์ง์์ผ๋ก ์ด๋ ์ ๋ ์์ค์ ์๋ฐ์คํฌ๋ฆฝํธ, ๋
ธ๋ & ์ต์คํ๋ ์ค๋ฅผ ์๊ตฌํ๋ค. ์น์ ์ดํด๊ฐ ์์ ์๋ค๋ฉด ์กฐ๊ธ ์ด๋ ค์ธ ๊ฑฐ ๊ฐ๋ค. ์ด ์ฑ
์ ์ ์ฒด์ ๊ฑธ์ณ, ์ค๋ฆฌ๊ฑด์ ๋ฐฉ๋ฌธํ๋ ์ฌ๋๋ค์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ฐ์์ ํ์ฌ ๋ฉ๋๋ผํฌ ์ฌํ์ฌ์ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ ๋ค. ๋๋ ํ๋์ ์์ฑ๋ ํ๋ก์ ํธ๋ฅผ ๋ค๋ฃจ๋ ์ฑ
์ ์์ฃผ ์ข์ํ๋ค. ๋์ค์ ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ํ๊ฒ ๋ ๋, ์ฐธ๊ณ ํ ์ ์๋ ์ข์ ์๋ฃ๊ฐ ๋๊ธฐ ๋๋ฌธ์ด๋ค. 5์ฅ ํ์ง ๊ด๋ฆฌ์์๋ ๋จ์ ํ
์คํธ, ๋ฆฐํธ, CI ..
2021 ์๋ฐ๊ธฐ ์ฝ๋ฉํ
์คํธ ํ๊ธฐ
2021 ์๋ฐ๊ธฐ ์ฝ๋ฉํ ์คํธ ํ๊ธฐ
2021.05.102021๋
5์ 10์ผ(์) ๊ธฐ์ค์ผ๋ก, ์๊ณ ์๋ ์ ํ์ ๋ฐฑ์ค ์ค๋ฒ ๋ฌธ์ ๋ 20๋ถ ๋ด์ธ๋ก ํ๊ณ , ๊ณจ๋ ๋ฌธ์ ๋ ๊ฑฐ์ ๋ชป ํธ๋ ์์ค์ด๋ค. ์ฝ๋ฉ ํ
์คํธ์ ๋ฒฝ์ ๋๋ค. ์์ง๊น์ง ํ ๋ฒ๋ ํต๊ณผํ ์ ์ด ์๋ค. ๋์ฒด๋ก 1-2๋ฌธ์ ์ ๋ ๋ฐ์ ๋ชป ํผ๋ค. ๋ฐํ์ ์กฐ๊ธ ์๋๋ ์์ค. 2021 ๋ค์ด๋ฒ ์ ์
๊ณต์ฑ ์ฝ๋ฉ ํ
์คํธ ์ด 4๋ฌธ์ ๊ฐ ๋์๊ณ , ์ ๋๋ก ํ์๋ ๊ฑด ๋ ๋ฌธ์ ์๋ค. 3๋ฒ ๋ฌธ์ ์์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ฐ๋ก ๊ณ ๋ คํ์ง ์์๋๋ฐ ํ๊ธฐ๋ฅผ ๋ณด๋ ๋ด๊ฐ ํผ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ฉด ํฐ์ง๋ค๋๋ผ. 2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ for Tech Developers ์ฝ๋ฉ ํ
์คํธ ํน๊ฐ ์นด์นด์ค.. ๋ฌธ์ ๋ ์ด๋ ต๊ณ , ๊ทธ๋งํผ ์๊ฐ๋ ๋ง์ด ์ค๋ค. ์ฒซ ๋ฒ์งธ ๋ฌธ์ ๋ฅผ 10๋ถ ๋ด์ธ๋ก ํ๊ณ ๋์ ๋ท ๋ฌธ์ ๋ค์ ๋ณด๋ค๊ฐ.. ๋ญ๊ฐ ์์์ด ํ ์์ด์ ํ์ง ์๊ณ ์ข
๋ฃํ๋ค. ์๋ง..
KMP ๋ฌธ์์ด ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ
KMP ๋ฌธ์์ด ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ
2021.05.09์ด ๊ธ์ ๋ณดํธ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ณด๋ ค๋ฉด ์ํธ๊ฐ ํ์ํฉ๋๋ค.
Programmers: ํ๊ฒ ๋๋ฒ
Programmers: ํ๊ฒ ๋๋ฒ
2021.05.08๋ชจ๋ ์กฐํฉ์ ๋ง๋ค์ด์, ์ฐ์ฐ์ ํด๋ณด๊ณ target๊ณผ ๊ฐ์ผ๋ฉด answer๊ฐ์ 1์ฉ ์ฆ๊ฐ์ํจ๋ค. ๋ฌธ์ https://programmers.co.kr/learn/courses/30/lessons/43165 ๋ด๊ฐ ์์ฑํ ์ฝ๋ Swift import Foundation func solution(_ numbers:[Int], _ target:Int) -> Int { var answer = 0 let n = numbers.count var picked = [Bool]() let op = [true, false] func pick(toPick: Int) { if toPick == 0 { var sum = 0 for i in 0..