์ ์ฒด ๊ธ179 [LeetCode] 217. Contains Duplicate with Swift ๋ฐฐ์ด์์ ๋ฐ๋ณต๋๋ ์ ์ฐพ๊ธฐ Contains Duplicate - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 217๋ฒ ๋ฌธ์ ๋ nums๋ intํ ์ซ์์ ๋ฐฐ์ด์ด๊ณ ์ด ๋ฐฐ์ด์์ ๋ฐ๋ณต๋๋ ๊ฐ์ด ์์ ๋ true๋ฅผ ๋ฐํ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ false๋ฅผ ๋ฐํํ๋ ๊ฒ์ ๋๋ค. ์ธ๋ป ๋ณด๊ธฐ์ ๋ฐฐ์ด์ ๋ชจ๋ ์๋ฅผ ํ์ํด์ผ ํ ๊ฒ ๊ฐ์ง๋ง ๊ทธ๋ ๊ฒ ํ๋ฉด ์๊ฐ ํจ์จ์ฑ ์ธก๋ฉด์์ ๋ฎ์ ์ ์๋ฅผ ๋ฐ์ ์ ๋ฐ์ ์์ต๋๋ค. ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฐ์ด์์ ์ค๋ณต๋ ๊ฐ์ ์ฐพ๊ธฐ ์ํด์ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ๊ณผ ํจ์๋ฅผ ์จ์ผ ํ ์ง ์์๋ด ์๋ค. 1. ์์ํ .. 2020. 9. 17. [Swift] ์์ ๊ฐ๋จํ tutorial -> URLSession์ผ๋ก json api ์์ ํ์ฑ๊น์ง ๊ตฌ๊ธ ๊ฒ์ํ๋ค๊ฐ ๋ฌด๋ฃ json ์ฌ์ดํธ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋คโบ๏ธ 6๊ฐ์ง ์ข ๋ฅ์ api๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๊ณต๋ถ ์ฉ์ผ๋ก ๊ฐ๋จํ๊ฒ ๊ตฌํํ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒ ๊ฐ์์ ์ฐ์ ์ ๊ฐ ์ฌ์ฉํ ๊ฒ์ 'Posts' ์ ๋๋ค. (์ง๊ธ ํฌ์คํธ ๋ง๋ก ์ ๋ ธ๋๋ฅผ ๋ค์ผ๋ฉฐ ํฌ์คํธ๋งจ์ผ๋ก ํฌ์คํธ api ๊ตฌ์กฐ๋ฅผ ๋ณด๊ณ ์์ต๋๋ค๐ Postman ๊ฐ์ถ) ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด Dictionary๊ฐ Array๋ก ๋ค์ด์ค๊ณ ์์ต๋๋ค ์ฆ ์ฒ์์๋ key๊ฐ์ด ์์ด์ฉ ์ฐ์ UI๋ ๊ธฐ๋ฅ์ ์ธ ๋ถ๋ถ์ ์ ๊ฒฝ์ฐ์ง ์๊ณ JSON ๋ฐ์ดํฐ ๋ถํฐ ํ์ฑํด ๋ณด์ฃ ๊ตฌ์กฐ๊ฐ ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ ๊ตฌ์กฐ์ฒด๋ ๊ฐ๋จํ๊ฒ ์์ฑํด ์ค๋๋ค. ์ด๋ Decodable ์ด๋ ๋์ฝ๋ฉ ์ธ์ฝ๋ฉ์ ์๊ฐํด ์ฃผ์๋ฉด ๋ฉ๋๋ค Encodable์ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ JSON์ผ๋ก ๋ณํํด ์ค๋ Decodable์ JSON์ผ๋ก ๋ถํฐ ๊ฐ.. 2020. 9. 12. [Swift] UINavigationController ์ฌ์ฉํ๊ธฐ ๐ช Storyboard ์์ ์๋ฒ ๋ ํ๊ธฐ Storyboard > Editor > Embed in > Navigation Controller ๐ช Programmatically import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { self.window = UIWindow(frame: UIScreen.main.bound.. 2020. 9. 8. [iOS, Swift] AppDelegate์์ window์ rootViewController ์ค์ ํ๊ธฐ Swift ํ๋ก์ ํธ๋ฅผ ์ฒ์ ์์ฑํ๊ณ ๋น๋ํ์ฌ ์คํํ๋ฉด ์ฒซํ๋ฉด์ด Main.storyboard๋ก ์ค์ ๋์ด ์์ต๋๋ค. ์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ผ์ ์๋ ViewController.swift ๋ง๊ณ ์์ ์ด ์์ฑํ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ window์ root view controller๋ก ์ค์ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น์? ๋ํ ์ฑ ์์๊ณผ ๋์์ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ก๋ํ๋ฉด์ ๋ทฐ ์ปจํธ๋กค๋ฌ์์ ํ์ํ ์ด๊ธฐ๊ฐ์ด ์๋ค๋ฉด?! ์ด๋๋ AppDelegate์ ์ฝ๋ ๋ช ์ค์ ์ถ๊ฐํด ์ฃผ์ด์ผ ํฉ๋๋ค. ์ ๊ฐ ํ์ฌ ๊ณต๋ถํ๊ณ ์๋ ์ฑ ์ the big nerd ranch guide ios programming์ ๋ช ๋ ์ง๋ ์ฑ ์ ๋๋ค. ์ฑ ๋๋ก ๋ฐ๋ผํ๋ xcode๊ฐ ์์ ๊ณผ ๋ฐ๊ปด ์ค๋ฅ๊ฐ ์๊ธฐ๋๋ผ๊ตฌ์. ๊ทธ๋์ ์ด๋ฒ์ ์์ xcode์๋ ์๋ window๋ ์ ์ธํด.. 2020. 8. 27. [Android] ์นด๋๋ทฐ ๋ ์ด์์ ์๋ฌ or Refactor > Migrate to AndroidX android ์นด๋ ๋ทฐ ๋ ์ด์์์ ์ฌ์ฉํ๋ ค๊ณ dependency๋ฅผ ์ถ๊ฐํ๋๋ฐ ์ด๋ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ์ด๋ด ๋ ์๋จ์ ํญ์์ Refactor์ ํด๋ฆญ Migrate to AndroidX ๋ฅผ ๋๋ฌ์ฃผ๋ฉด ์ด๋ฐ ์ฐฝ์ด ๋์ต๋๋ค. Migrateํด๋ฆญ ํ๋จ ์ฐฝ์์ Do Refactor ํด๋ฆญํด ์ค๋๋ค. ๊ทธ๋ฌ๋ฉด ์ค๋ฅ๊ฐ ๊น๋ํ ์ฌ๋ผ์ง๋๋ค! Do Refactor ๋ฒํผ๊น์ง ๋๋ฌ์ฃผ์ ์ผ ๋์! 2020. 8. 26. [iOS] ๋ทฐ ์ปจํธ๋กค๋ฌ(View Controller)์ ์๋ช ์ฃผ๊ธฐ Animation ๊ณต๋ถํ ๋ ค๊ณ ๋ณด๋ ๋ทฐ ์ปจํธ๋กค๋ฌ์ ์๋ช ์ฃผ๊ธฐ์ ๋ํด ์์๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋๋ผ๊ตฌ์! ๋ทฐ ๋จ์๋ง์ ์ ๋๋ฉ์ด์ ์ ์คํํ๊ณ ์ถ์๋ฐ ์๋ช ์ฃผ๊ธฐ ๊ด๋ จ๋ ์ฝ๋ฐฑ ๋ฉ์๋๊ฐ ๋ง์์ ์ด๋์ ๋ฃ์ผ๋ฉด ์ข์ ๊น ํ๋ค๊ฐ ์๋ช ์ฃผ๊ธฐ๋ฅผ ์ ๋ฆฌํด ๋ดค์ต๋๋ค. ์ฌ์ค... ์ด์ ์ ์ต์ ์จ ๊ณต๋ถํ๋ฉด์ ์ฌ์ฉ ์๊ณ ์๊ธฐ๋ ํ๋ฐ ์ ๋ฆฌํด๋๋ฉด ๋์ค์ ๊ธฐ์ต์ด ์๋ ๋ ์ฐธ๊ณ ํ๋ ค๊ณ ์ ์ด๋ด ๋๋ค.. ๐ต์คํํด๋ณด๊ธฐ ์คํ ๋ฆฌ ๋ณด๋์ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ค๋ฅธ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ก ์ด๋ํ๋๋ก ๊ฐ๋จํ๊ฒ ๋ง๋ค์ด ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค. (์คํ ๋ฆฌ ๋ณด๋ ์ฌ์ฉํ์ง ์ผ๋ง ์๋์.. ์ค๋ฆฐ์ด ์ ๋๋ค) SubViewController.swift ํ์ผ์ ์ถ๊ฐํด ์ค๋๋ค ์ด๋ํ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ์ ํํด ์ฃผ์๊ณ identity ์ธ์คํํฐ์์ class๋ฅผ ๋ฐฉ๊ธ ์์ฑํ ์ค์ํํธ ํ์ผ๊ณผ.. 2020. 8. 21. [iOS, Swift] Localization(๋ก์ปฌ๋ผ์ด์ง, ํ์งํ) ํ์งํ, ์ง์ญํ, ๋ก์ปฌ๋ผ์ด์ง ๋ฑ๋ฑ์ผ๋ก ๋ค์ํ๊ฒ ๋ถ๋ฆฌ๊ณ ์๋๋ฐ ์ฝ๊ฒ ๋งํด์ ๋ค๋ฅธ ๋๋ผ์์ ์ฑ์ ์คํํ๋ฉด ๊ทธ ๋๋ผ์ ์ธ์ด์ ๋ง๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ธ์ด๋ฅผ ์ค์ ํด ์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค~ ์ฒ์ ๋ฐฐ์ธ ๋๋ ์ด๋ฐ ๊ธฐ๋ฅ์ด ํ์ํ ๊น ์ถ์๋๋ฐ ๊ธ๋ก๋ฒ ์ฑ์ ๋ง๋ค๊ณ ์ ํ๋ค๋ฉด ํ์์ผ ๊ฒ ๊ฐ์ ์ ๋ฆฌํด๋ณด๊ธฐ๋ก ํ์ต๋๋ค! ** ๋ณธ ๋ด์ฉ์ iOS Program 6th (The Big Ranch Guide) ์์ดํ์ ๋ณด๊ณ ๊ณต๋ถํ ๊ฒ์ด๋ผ ํ๋ฆฐ ๋ด์ฉ์ด๋ ์ค์ญ์ด ์์ ์ ์์ต๋๋ค. ํ๋ฆฐ ๋ด์ฉ์ด๋ ์ง์ ์์ผ์๋ฉด ๊ผญ ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค! ๐ view๋ฅผ ๋ง๋ค์ด ์ฃผ๋ ๋ฐฉ๋ฒ์๋ Story board๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ Programmatically ์ฆ, ์ฝ๋๋ก ๊ตฌํํด ์ฃผ๋ ๋ฐฉ๋ฒ์ด ์๋ฏ ์ง์ญํ ๋ํ ์ ๋๊ฐ์ง ๋ฐฉ์์ ๋์ํ๋ ๋ฐฉ๋ฒ์ด ์กด์ฌํฉ๋๋ค. ์ฐ์ ์ฒซ ๋ฒ์งธ๋ก St.. 2020. 8. 19. [Android] ์๋๋ก์ด๋ ๊ตฌ์ฑ ์์ * ํด๋น ๋ด์ฉ์ ๊ณต๋ถํ๋ฉด์ ์๊ฒ๋ ์ฌ์ค์ ์ ๋ฆฌํ์ต๋๋ค. ํ๋ฆฐ ๋ถ๋ถ์ด ์๊ฑฐ๋ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์! +) ๋ฉ์ธ ์ค๋ ๋ ์์ฑ ์์ : ์ ํ๋ฆฌ์ผ์ด์ ์คํ ํ๋ ์๊ฐ -> UI ์์ ๊ฐฑ์ , ๋ณ๊ฒฝ ์ผ๋ฐ ์ค๋ ๋ ์์ฑ ์์ : ์์คํ ์ด๋ ์ฌ์ฉ์์ ์ํด ์ดํ์ ์์ฑ 4๋ ์์(Component)๋ - Activity - Service - Broadcast Receiver - Content Provider ๊ทธ ์ธ์ Intent, view, Fragment ๋ฑ์ด ์์ ์กํฐ๋นํฐ(Activity) - UI ํ๋ฉด์ ๋ํ๋ -> ์ฆ ์ฌ์ฉ์๊ฐ ์ฑ์ ์คํ ํ์ ๋ ๋ณด๊ฒ ๋๋ ์ธํฐํ์ด์ค ํ๋ฉด ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ์ง๊ณ ์์ - ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ์กํฐ๋นํฐ๋ฅผ ๊ฐ์ง ์ ์์ - ์กํฐ๋นํฐ์ ์์ฑ์ ๋ฉ์ธ ์ค๋ ๋์ด๋ฉฐ ์ฌ๊ธฐ์ ์กํฐ๋นํฐ.. 2020. 8. 17. [Android, Kotlin] ๋ฐ์ดํฐ ํด๋์ค์ ๊ธฐํ ํด๋์ค Do it! ์ฝํ๋ฆฐ ํ๋ก๊ทธ๋๋ฐ ์ฑ ์ ์ฐธ๊ณ ๋ฐ ์ธ์ฉ ํ์ฌ ์์ฑ ๋์์ต๋๋ค. ์ฑ ์ ์๋ ์ฃผ๊ด์ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค DTO๋ฅผ ์ฌ์ฉํ๋ ์ด์ DTO๋ ์ผ์ข ์ ํ์ค๊ณผ ๊ฐ์ ์ฝ์ -> ์ ์กํ๊ฑฐ๋ ๋ฐ๊ณ ์ ํ๋ ์ด๋ค ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์์ ๋ทฐ๋ mvc๋ชจ๋ธ์์ ๋ทฐ๋ ์ฌ์ฉ์์ ์ํธ์์ฉ์ ์ํํจ ๋ชจ๋ธ์ด๋ mvc๋ชจ๋ธ์์ ๋ชจ๋ธ์ด๋ ๋ฐ์ดํฐ์ ํํ์ ์ํด ์์ฑ ๋ฐ์ดํฐ ํด๋์ค์ ์ ์ธ ์ฝํ๋ฆฐ์์๋ ๋ฐ์ดํฐ ํด๋์ค๋ฅผ ์ ๊ณตํจ - ์ฃผ์์ฑ์๋ ์ต์ํ ํ๋์ ๋งค๊ฐ๋ณ์ - ์ฃผ์์ฑ์์ ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ val, var - abstract, open, sealead, inner ํค์๋ ์ฌ์ฉ ๋ถ๊ฐ ๋ฐ์ดํฐ ํด๋์ค๊ฐ ์๋ ์์ฑํ๋ ๋ฉ์๋ data class Customer(var name: String, var email: String) .. 2020. 8. 9. [Kotlin 20200805] ํ๋กํผํฐ ์ด๊ธฐํ 06_1 ํ๋กํผํฐ ์ ๊ทผ ํ๋กํผํฐ์ ํ๋์ ์ฐจ์ด์ ์๋ฐ์ ๊ฒฝ์ฐ ํด๋์ค ๋ด์์ ์ ์ธํ ๋ณ์๋ฅผ 'ํ๋'๋ผ๊ณ ํ๊ณ ์ฝํ๋ฆฐ์์๋ 'ํ๋กํผํฐ'๋ผ๊ณ ์นญํจ. ํ๋กํผํฐ์ ๊ฒฝ์ฐ ์ ๊ทผ ๋งค์๋์ธ getter์ setter๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์๋ฐ์ ํ๋์ ๋ค๋ฅธ ๋ช ์นญ์ ์ฌ์ฉํ๋ ๊ฒ. ์ฝํ๋ฆฐ์์๋ ๊ฐ ํ๋กํผํฐ์ ๋ํด ์ ๊ทผ ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ฉฐ ์ฃผ ์์ฑ์์ ์ํด ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ํ ์ ์์ผ๋ฏ๋ก ๊ฐ๋จํ๊ฒ ์ฝ๋ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค. class ClassName(var a: String, var b: Double) // ํด๋์ค ์ ์์ ํจ๊ป ์ฃผ ์์ฑ์์์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ํจ ์ฝํ๋ฆฐ์์์ ์ ๊ทผ ๋ฉ์๋ - val ๋ก ์ ์ธํ ํ๋กํผํฐ๋ getter๋ง ๊ฐ๋ฅ. ๊ฐ ๋ฐ๊พธ๋ ๊ฒ ๋ถ๊ฐํ๊ธฐ ๋๋ฌธ์ - var์ ๋ด๋ถ์์ ์ ๊ทผ ๋ฉ์๋๊ฐ .. 2020. 8. 5. [Kotlin 20200804] ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ - ์ธํฐํ์ด์ค ์ฐธ๊ณ ๋ฐ ์ธ์ฉ ๋์ : Do it! ์ฝํ๋ฆฐ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค์์ ์ฐธ์กฐ - ์ธํฐํ์ด์ค ์ฐธ์กฐํ๋ ํด๋์ค -> ์ธํฐํ์ด์ค ๊ฐ์ด๋์ ๋ฐ๋ผ ๋ด์ฉ ๊ตฌํ - ๋ค์ค ์์์ ๋ถ๊ฐ๋ฅ ํ์ง๋ง ๋ค์ค ์ธํฐํ์ด์ค ์ง์ ์ ๊ฐ๋ฅ - ์ฌ๋ฌ ์ธํฐํ์ด์ค์ ์ํด ๋ฉ์๋๋ ํ๋กํผํฐ ๋ช ์ด ์ค๋ณต๋๋ ๊ฒฝ์ฐ -> ์ต๊ธ ๋ธ๋ํท()์ ์ฌ์ฉ open class A { open fun a() = println("class a and method a") fun b() = println("class a and method b") } interface B { fun a() = println("interface a method a") fun c() = println("interface b method b") } class C : A(), B{ override.. 2020. 8. 4. ์ค์ฝ๋น ์ง์ ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ ๋งต๊ฒ ๋งค์ด ๊ฒ์ ์ข์ํ๋ Leo๋ ๋ชจ๋ ์์์ ์ค์ฝ๋น ์ง์๋ฅผ K ์ด์์ผ๋ก ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ๋ชจ๋ ์์์ ์ค์ฝ๋น ์ง์๋ฅผ K ์ด์์ผ๋ก ๋ง๋ค๊ธฐ ์ํด Leo๋ ์ค์ฝ๋น ์ง์๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋ ๊ฐ์ ์์์ ์๋์ ๊ฐ๏ฟฝ๏ฟฝ programmers.co.kr ํ๋ก๊ทธ๋๋จธ์ค์ ์ฝ๋ฉํ ์คํธ ์ฐ์ต์์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ ๋ณด๋ฉด ์ฌ์ฉํด์ผ ํ๋ ์๋ฃ ๊ตฌ์กฐ๊ฐ ์ ํ ์๋ค. ์ด๋ฒ์ ํ๊ฒ ๋ ๊ฒ์ ํ(Heap) > ๋ ๋งต๊ฒ ์ด๋ค. ์์ ์์ ๊ทธ ๋ค์ ์์ ์๋ฅผ ์ฌ์ฉํด์ ์ฐ์ฐ์ ํ๊ณ ๋ค์ ๋ฆฌ์คํธ์ ๋ฃ์ด์ ์ต์๊ฐ ๊ธฐ์ค์ ๋ํ ์กฐ๊ฑด๋ง ๋ง์ถ๋ฉด ๋๊ฒ ๋ค ์ถ์์ผ๋ ํจ์จ์ฑ์์ ๊ณผ๊ฐํ ์์๋นํ๋ค. ๊ทธ๋ ๋ค๋ฉด ์ ์ฌ๊ธฐ์ 'ํ'์ ์ ์ํ ๊ฑธ๊น? ์คํ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ ๊ฑธ๊น? def solution(scovile, k): answer = 0 w.. 2020. 8. 3. ์ด์ 1 ยทยทยท 10 11 12 13 14 15 ๋ค์