์ ์ฒด ๊ธ179 API ์ฌ์ดํธ ๋ชจ์ (์์ ์ ๋ฐ์ดํธ) https://www.weatherbit.io/ Weatherbit | Weather API - Historical Weather API Simple. Powerful. Reliable. Getting access to weather data or historical weather data has never been easier. Unparalleled Forecast Accuracy We leverage the power of forecast models, and machine learning to deliver the most accurate weather forecast API on www.weatherbit.io ๊ฐ์ ํด์ free plan์ผ๋ก ์ฌ์ฉํ๋ฉด ์ ํ๋ ํ์ ์์์ ๊ตญ๊ฐ, ์ง์ญ์ ๋ ์จ API.. 2020. 10. 12. [leetCode] 152. Maximum Product Subarray ์นด๋จ ์๊ณ ๋ฆฌ์ฆ์ ๋ณํ ์ ๋ฒ leetCode์์ ํ์๋ Maximum Subarray์ ๋น์ทํ ๋ฌธ์ ์ด๋ค. ๋๋ฌธ์ ๊ธฐ์กด์ ์ตํ๋ ์นด๋จ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด ๋์ง๋ง ๋ณ์๊ฐ ์กด์ฌํ๋ค. Product๋ ๊ณฑ์ผ๋ก์ ์์์ ์์์ ๊ณฑ์ ์์๊ฐ ๋๊ณ ์์์ ์์๋ฅผ ๊ณฑํ๊ฒ ๋๋ฉด ์์๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์ด ๊ฒฝ์ฐ์ ์๋ฅผ ๋๋นํ์ฌ ์ต๋ ๊ฐ์ ๊ตฌํด ์ฃผ์ด์ผ ํ๋ค. ์นด๋จ ์๊ณ ๋ฆฌ์ฆ์ ์ฝ๊ฒ ๋งํ๋ฉด ํ์ฌ ๊ฐ์ผ๋ก๋ง ์ด๋ฃจ์ด์ง ์ด๋ ์ด์ ์ด์ ์ด๋ ์ด+ํ์ฌ๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ธ ์ด๋ ์ด์ ๋น๊ต๋ผ๊ณ ํ ์ ์๋ค. class Solution { func maxProduct(_ nums: [Int]) -> Int { var num = nums var maxP = num[0] var minP = num[0] var answer = num[0] for i in 1.. 2020. 10. 12. [Swift] ํ๋ก์ ํธ์ Realm ์ ์ฉํ๊ธฐ (cocoapod ๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ) Swift ํ๋ก์ ํธ์ Realm ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ฝ์ฝ์ํ์ผ๋ก install ํด๋ด ์๋ค~ ์ฐ์ ํ ๊ฒ์ Finder์ ์์ ์ ํ๋ก์ ํธ ํ์ผ์ ๋์ ๋์ผ์ธ์ ์ ํ๋ก์ ํธ ํ์ผ ๋ช ์ "Universal Memo" ์ ๋๋ค. ์ด์ Command + Space bar๋ฅผ ๋๋ฌ์ terminal์ ๊ฒ์ํ๊ณ ์คํ ํฉ๋๋ค cd๋ฅผ ์ ๋ ฅํ๊ณ ํ๋ก์ ํธ ํ์ผ์ dragํด์ terminal๋ก ์ด๋์์ผ ์ฃผ์ธ์ ๊ทธ๋ฆฌ๊ณ enter์ ๋๋ฌ์ฃผ๋ฉด ํด๋น ํด๋์์ ์์ ์ ์คํ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ์์ ์ ํ๋ก์ ํธ๋ก ์์ ํ์ผ ์์น ๋ณ๊ฒฝ ๋ ๊ฑธ ํ์ธํ๊ณ pod init ์ ์ ๋ ฅํด ์ฃผ์ธ์ ๊ทธ๋ฌ๋ฉด ํ๋ก์ ํธ ํ์ผ์ ๋ณด๋ฉด Podfile์ด ์์ฑ๋์ด ์๋ ๊ฒ์ ํ์ธ ํ ์ ์์ต๋๋ค. ์ ๋ vi ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ๋ค์ terminal๋ก.. 2020. 10. 8. [Swift] Notification์ผ๋ก view์ view ๋ฐ์ดํฐ ์ ๋ฌํ๊ธฐ ๋์ค์ ์ฐธ๊ณ ํ๋ ค๊ณ ์ ๋ ๊ธ ํด๋์ค ์ ์์ ์ฒดํฌํ ์ ์๊ฒ ๋์(?) ๋๋์ด Notification์ ์ฐ๊ธฐ๋ก ํ๋ค! ์ RxRxํ๋์ง ์๊ฑฐ ๊ฐ๋ค... ใ ใ ใ 1. Notification ๋ฑ๋กํ๊ธฐ NotificationCenter.default.addObserver(self, selector: #selector(updateDateLabel(_:)), name: .updateYearDate, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(updateHour(_:)), name: .updateHour, object: nil) NotificationCenter.default.addObserver(self, selecto.. 2020. 10. 7. [leetCode] 53. Maximum Subarray with Swift ์นด๋จ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ฝ๊ฒ ๊ตฌํ๊ธฐ leetCode 53์ ๋ชจ๋ ์์์ ๊ฐ์ ํฉ์ด ์ต๋๊ฐ์ ๊ฐ์ง๋ ์๋ธ ์ด๋ ์ด๋ฅผ ๊ตฌํ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค. ์ด๋ ์๋ธ ์ด๋ ์ด๋ ์ฐ์์ฑ์ ๊ฐ์ ธ์ผ ํ๋๋ฐ, ์ด ๋ป์ ์ค๊ฐ ์ธ๋ฑ์ค๋ฅผ ๋ฐ์ด ๋์ง ์๊ณ ์ธ๋ฑ์ค ์์๋๋ก ๋์ด ์๋ ์ด๋ ์ด์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์์ ์ต๋๊ฐ๋ค์ ์กฐํฉ๋ง์ ์ฐพ์ ๊ตฌํ๋ ๊ฒ์ด ์๋๋ฉฐ ์ด๋ค ์๋ธ ์ด๋ ์ด๊ฐ ๊ฐ์ฅ ์ต๊ณ ์ ๊ฐ์ ๊ฐ์ง๊ณ ์๋์ง ๊ตฌํ๋ ๊ฒ์ด ์ด ๋ฌธ์ ์ ํฌ์ธํธ ์ ๋๋ค. ์๋ธ ์ด๋ ์ด์ ์ต๋๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์์ ๋ง์ด ์ธ๊ธ๋๋ ์๊ณ ๋ฆฌ์ฆ์ Kadane ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. reference Youtube video here ๐ ์ฐ์ ๋ฌธ์ ์์ ์ฃผ์ด์ง [-2, 1, -3, 4, -1, 2, 1, -5, 4]๋ฅผ ๋ด ์๋ค. ์ฌ๊ธฐ์ ์ฒซ๋ฒ์งธ 4๋ฅผ ์ค์ ์ผ๋ก ๋ณด๊ฒ ์ต๋๋ค. ํ์ฌ ์ธ๋ฑ์ค๋ 3์ด๊ณ ๊ทธ ์ธ๋ฑ์ค์ ๊ฐ์ 4์ ๋๋ค.. 2020. 10. 6. [Swift] Date์ DateFormatter๋ก ํ๊ตญ ํ์ฌ ์๊ฐ ๊ตฌํ๊ณ UILabel์ ๋ฃ์ด๋ณด๊ธฐ ๊ทธ ๋์ ๋ฏธ๋ฃจ๊ณ ์์๋ Date๋ฅผ ๋ณผ๋๊ฐ ์จ๊ฑฐ ๊ฐ๋ค....๐คจ Horizontal collectionView์ ์ฒซ ๋ฒ์งธ ์ ์ ํ์ฌ ๋ ์ง๋ก ๊ธฐ์คํด์ ๊ทธ ๋ค์ ๋ ์ ๋ค์ ์ ์ ํ ๋นํด ์ฃผ๋ ์์ผ๋ก ๋ง๋ค๊ฒ๋๋ค! ์ฐ์ now๋ผ๋ ํ๋กํผํฐ๋ฅผ ๋ง๋ค์ด ์ค๋๋ค. let now = Date().timeIntervalSince1970 Date() ๋ ํ์ฌ ๋ ์ง์ ์๊ฐ์ ๋ฐํํ๊ฒ ๋๋๋ฐ timeIntervalSince1970์ 1970๋ ์ดํ๋ก ๋ช ์ด๊ฐ ํ๋ ๋์ง ๋ํ๋ ๋๋ค. ํ์ฌ ์๊ฐ์ now๋ผ๋ ํ๋กํผํฐ์ ์ง์ ํด ์ค๋๋ค. ๋ค์์ผ๋ก DateFormatter์ ์์ฑํฉ๋๋ค. let date: DateFormatter = { let df = DateFormatter() df.locale = Locale(identifier: "ko.. 2020. 9. 29. [Swift] UICollectionViewCell ์์ UICollectionView ๋ฃ๊ธฐ UICollectionViewCell ๋ํ ํ๊ณ ํ๊ณ ์ฌ๋ผ๊ฐ๋ค ๋ณด๋ฉด UIView์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ ์ ์ฉํ ๋ฐฉ์๊ณผ ๋๊ฐ์ด ํด์ฃผ๋ฉด ๋ฉ๋๋ค. ๊ตฌ์ฑ์ ๋ณด๋ฉด ์ฃผํฉ์ ๋ทฐ๋ 3๊ฐ์ ์น์ ์ ๊ฐ์ง UICollectionView์ด๊ณ ์ด๋ก์ ๊ตฌ์ฑ์ ๋ณด๋ฉด ์ฃผํฉ์ ๋ทฐ๋ 3๊ฐ์ ์น์ ์ ๊ฐ์ง UICollectionView์ด๊ณ ์ด๋ก์์ ๊ฐ ์น์ ์ ๋ค์ด๊ฐ ์๋ ํ๋์ UICollectionViewCell ์ ๋๋ค ๊ทธ๋ฆฌ๊ณ ๋ถํ์์ ๋ง์ง๋ง ์น์ ์ ์๋ UICollectionViewCell์ UICollectionView๋ฅผ ๋ฃ๊ณ sub cell์ ๊ตฌํํด ์ค ๋ชจ์ต์ ๋๋ค ์ฐ์ ๋ง์ง๋ง ์ค์ ์๋ ์ด๋ก์ UICollectionViewCell์ ํด๋์ค ์ด๋ฆ์ MinutePickerCell ์ด๋ผ๊ณ ํ๊ณ ์ฌ๊ธฐ์ ๋ถํ์์ UICollectionView๋ฅผ .. 2020. 9. 29. [Swift] UICollectionView์์ Section์ ๋๋ ๋ณด์! ์ค๋น๋ฌผ & ๋ค์ด๊ฐ๋ฉฐ ์ด์ ํฌ์คํ ์ ์ด์ด์ ์์ ํ๋ ํํ ๋ฆฌ์ผ ์ด์ง๋ง ์ด๋ฏธ ์์ฑ๋ ๊ธฐ๋ณธ UICollectionView๋ง ์๋ค๋ฉด ์กฐ๊ธ์ด๋๋ง ๋์์ด ๋ ๊ฑฐ ๊ฐ์ต๋๋ค! ์ด๋ฒ์ ๊ตฌํํ ๊ฒ์ UICollectionView๋ฅผ 3๊ฐ์ Section์ผ๋ก ๋๋๋ ๊ฒ ์ ๋๋ค~ (์น์ ์ ๋ค์ด๊ฐ๋ ์ ์ ๋ค์ ํฌ์คํ ์์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค.) ๊ฐ๋ UI ํํ ๋ฆฌ์ผ ๋ณด๋ฉด ์๋จ ์ปฌ๋ ์ ๋ทฐ๋ ์๋์ผ๋ก ๋์ด๊ฐ๋ ์นด๋๋ทฐ, ๋ฐ๋ก ์๋์๋ ๋ค๋ฅธ ์ปฌ๋ ์ ๋ทฐ๋ฅผ ๋๋ ๋ค ๋๊ฐ, ๊ฐ์ ํ๋ฉด์์ ๋ค๋ฅธ ์ปฌ๋ ์ ๋ทฐ๋ค์ด ๋ค์ด๊ฐ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ๊ฐ์ ์ปฌ๋ ์ ๋ทฐ๋ฅผ ๊ตฌํํด๋ ๋๊ฒ ์ง๋ง Section์ ๋๋์ด ๊ตฌํํด๋ ๋ฉ๋๋ค~ ์ด๋ป๊ฒ ๊ตฌํํ ์ ์๋์ง ์์๋ด ์๋ค~~ section์ ๊ฐฏ์๋ฅผ ์ง์ ํ๋ ๋ฉ์๋๊ฐ ์์ต๋๋ค. optional func numberO.. 2020. 9. 28. [Swift] Anchor ์ฌ์ฉํด์ UIView ๋ฃ๊ธฐ ๋ค์ด๊ฐ๊ธฐ์ ์์... Programmatically ๋ทฐ์ ๋ทฐ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. interface builder ์์ UIView๋ฅผ ์ถ๊ฐํ๊ณ frame์ ์ง์ ํด ์ค๋ ๋์ง๋ง ์ฝ๋๋ก view๋ฅผ ์์ฑํด์ addSubView ํด์ฃผ๊ฑฐ๋ ํด๋ํฐ ๋ฐฉํฅ(width๊ฐ ๋ฐ๋๋ ๊ฒฝ์ฐ), safe Area ๋ฑ์ Anchor๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ํธํ ๋๊ฐ ์์ต๋๋ค. ์ด์ ์ ํฌ์คํ ํ collectionView์์ ์์ํ๋ฉฐ ์ด๋ ๋ฐ์ํ ์ค๋ฅ๋ width๊ฐ ์ ๋๋ก ๋์ค์ง ์์ ์งค๋ฆฌ๋ ๊ฒฝ์ฐ์์ต๋๋ค. Anchor๋ฅผ ํตํด์ ์ด๋ป๊ฒ ๊ณ ์น ์ ์๋์ง ์์๋ด ์๋ค. ์ฝ๋๋ฅผ ์ด์ฉํ์ฌ view๋ฅผ ์์ฑํด์ ๋ฃ์ด์ฃผ๊ธฐ ์ํด storyboard์ ์ถ๊ฐํ ๋ทฐ๋ฅผ ์ญ์ ํด์ฃผ์์ต๋๋ค ์ฐ๊ฒฐ๋ IBOutlet ์ญ์ ๋ ๊ผญ ํด์ค๋๋ค ViewController.swif.. 2020. 9. 28. [iOS] Xcode ๋ ๋ฒ์ ๊ฐ์ด ๊น๊ธฐ Xcode 12 ๋ฒ์ ์ ๋ฐ์ดํธ ๊ฐ๋ฅํ์ ๋ง์ ์ ๋ฐ์ดํธ ํ๋๋ ์ฌ๊ฑธ Xcode 11์ด ํ์ํด ์ก๋ค... ๋น์ฐํ ์ธํฐํ์ด์ค ๋น๋ ํด ๋ฒ์ ๋ ๋ฐ๋๋ ๊ฑด๋ฐ ์ ๋ฐ์ดํธ ๋ฒํผ ๋ฐ๋์๋ง์ ์๊ฐ๋ฝ์ด ๋ง์๋๋ก ๋๋ฌ๋ฒ๋ฆฌ๋ ๊ฑธ ์ฐ์งธ ์ ์ฐ์ Finder > ์์ฉ ํ๋ก๊ทธ๋จ (ํน์ Application)์ผ๋ก ๋ค์ด๊ฐ ์ค๋๋ค ์ ๋ฐ์ดํธ ํ Xcode์ ํ์ผ ๋ช ์ ๋ฐ๊ฟ ์ฃผ์ธ์ (๋ญ์ผ ๋ค์ด๋ฒ ์จ์ผ ์ ๋ ๊ฐ์ง..ใ ใ ใ ) ์ ์ด์ https://developer.apple.com/download/more/ ๋ก๊ทธ์ธ - Apple idmsa.apple.com ์๋ ๋งํฌ๋ก ๋ค์ด๊ฐ ์ค๋๋ค! ๋ก๊ทธ์ธ ํ์ํด์ ๋ก๊ทธ์ธ ํด์ฃผ๊ณ ์ํ๋ ๋ฒ์ ์ ๊ฒ์ํด ์ค๋๋ค. ๋ค์ด ๋ฐ์ ์ฃผ์ธ์ one hour later... ๋ค์ด ๋ฐ์ Xcode ์คํํด ์ฃผ๋ฉด ํ๋์ ๋งฅ์์.. 2020. 9. 28. [Swift] UIViewController ์ UICollectionView ๋ฃ๊ธฐ ์๋ด ํด๋น ํํ ๋ฆฌ์ผ์ ์คํ ๋ฆฌ๋ณด๋์์ UICollectionViewController ๋ก ์์ํ๋ ๊ฒ์ด ์๋ UIViewController์ UIView๋ฅผ ๋ฃ๊ณ ํด๋น ๋ถ๋ถ์ UICollectionView๋ฅผ ๋ฃ์ด์ฃผ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ด์ฉ์ ๋๋ค. ์คํ ๋ฆฌ ๋ณด๋์์ UICollectionViewController๋ก ์์ํ๊ณ ์ ํ์๋ฉด ๋ค๋ฅธ ๊ธ์ ์ฐธ๊ณ ํด ์ฃผ์ธ์. ์ค๋น ํ๋ก์ ํธ๋ฅผ ์์ฑํด ์ฃผ๊ณ ๋น๋ ํด์ค๋๋ค. ์คํ ๋ฆฌ๋ณด๋๋ก ์คํ ๋๋ ๊ฑธ ํ์ธํ ์ ์์ต๋๋ค. ์ด์ ์คํ ๋ฆฌ๋ณด๋๋ก ๊ฐ์ UIView๋ฅผ ์ถ๊ฐํด ์ฃผ๊ฒ ์ต๋๋ค. command + shift + L ์ํ๋ ์์ญ์ ๋ง์ถ์ด constraints๋ฅผ ์ถ๊ฐํด ์ค๋๋ค. ์ด์ ViewController.swift๋ฅผ ์ด์ด ์ค๋๋ค. UICollectionView๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ UICol.. 2020. 9. 28. UICollectionView must be initialized with a non-nil layout parameter ์๋ฌ Exception NSException * "UICollectionView must be initialized with a non-nil layout parameter" 0x000060000266a430 ์๋ฌ ๋ฉ์์ง์์ ์ ์ ์๋ฏ์ด UICollectionView๋ nil ํ์ ์ด ์๋ layout ํ๋ผ๋ฏธํฐ๋ก ์ด๊ธฐํ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ปฌ๋ ์ ๋ทฐ๋ฅผ ์์ฑํ ๋ ๋ ์ด์์์ผ๋ก ์ด๊ธฐํ ์์ผ ์ฃผ๋ฉด ๋ฉ๋๋ค! let collectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() layout.minimumLineSpacing = 10 layout.scrollDirection = .vertical layout.sectionI.. 2020. 9. 28. ์ด์ 1 ยทยทยท 9 10 11 12 13 14 15 ๋ค์