๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•
[Algorithm] ์กฐํ•ฉ(Combination)์ด๋ž€? (feat.Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ ์ •๋ง ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” "์กฐํ•ฉ" ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ์กฐํ•ฉ์ด๋ž€? n๊ฐœ์˜ ์›์†Œ์—์„œ r ๊ฐœ์˜ ์›์†Œ๋ฅผ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๋ฝ‘๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ - ๋‚˜๋ฌด ์œ„ํ‚ค - ์ˆœ์—ด๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ˆœ์„œ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์•„์š”. ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ๋ฌผ๊ฑด์„ ์‚ฌ๊ณ  ์ด ๊ฐ€๊ฒฉ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•ด์š”. ๊ณผ์ผ๋กœ ์˜ˆ๋ฅผ ๋“ค๋ฉด ์‚ฌ๊ณผ,ํฌ๋„,์ˆ˜๋ฐ•์ด ์žˆ๋‹ค๋ฉด ์‚ฌ๊ณผ,ํฌ๋„,์ˆ˜๋ฐ• ํฌ๋„,์‚ฌ๊ณผ,์ˆ˜๋ฐ• ์ˆ˜๋ฐ•,์‚ฌ๊ณผ,ํฌ๋„ ... ๋“ฑ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์‚ฌ๋„ ์ด ๊ฐ€๊ฒฉ์„ ๋˜‘๊ฐ™๊ฒ ์ฃ ? ์ฆ‰, ์ด๋ฃจ์–ด์ง„ ๊ณผ์ผ์ด ๋˜‘๊ฐ™๋‹ค๋ฉด ํ•˜๋‚˜์˜ ์กฐํ•ฉ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ ๊ตฌํ˜„ ๋จผ์ € ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ด์„ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. var cases:[[Int]] = [] combination์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์„ค์ •ํ•ด์ฃผ๋Š”๋ฐ ์ธ๋ฑ์Šค๋“ค์„ ๋‹ด๊ณ ์žˆ๋Š” ind.. 2021. 6. 27.
[Algorithm] ์ˆœ์—ด(Permutation)์ด๋ž€? (feat.Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ ์ •๋ง ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” "์ˆœ์—ด"์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! ์ˆœ์—ด์ด๋ž€? ์„œ๋กœ ๋‹ค๋ฅธ n๊ฐœ์˜ ์›์†Œ์—์„œ r๊ฐœ๋ฅผ ์ค‘๋ณต์—†์ด ๊ณจ๋ผ ์ˆœ์„œ์— ์ƒ๊ด€์žˆ๊ฒŒ ๋‚˜์—ดํ•˜๋Š” ๊ฒƒ์„ ์ด๋ฅธ๋‹ค. - ๋‚˜๋ฌด ์œ„ํ‚ค - ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ์ค„ ์„ธ์šฐ๊ธฐ์™€ ๋˜‘๊ฐ™์•„์š”. A,B,C๋ผ๋Š” ํ•™์ƒ์„ ์ค„ ์„ธ์šฐ๋Š” ๋ฐฉ๋ฒ•์€ ABC,ACB,BAC,BCA,CAB,CBA ๋“ฑ์ด ์žˆ๊ฒ ์ฃ ? ์ด ์ค‘์—์„œ 2๋ช…์˜ ํ•™์ƒ์œผ๋กœ ์ค„ ์„ธ์šฐ๋Š” ๋ฐฉ๋ฒ•์€ AB,AC,BA,BC,CA,CB ๋“ฑ์ด ์žˆ์„๊ฑฐ์—์š”. ์ฝ”๋“œ ๊ตฌํ˜„ ๊ฒฝ์šฐ์˜ ์ˆ˜๋“ค์„ ๋‹ด์„ ์ด์ค‘ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. var cases:[[Int]] = [] ๋ช‡ ๊ฐœ๋ฅผ ๋ฝ‘์„์ง€ ์ •ํ•ด์ค๋‹ˆ๋‹ค. let pickCount = 3 ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ˆœ์—ด ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ๋Š” ์ „์ฒด ์ธ๋ฑ์Šค๊ฐ€ ๋‹ด๊ธด.. 2021. 6. 27.
[Algorithm] ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰(BFS,Breadth-First-Search)๋ž€?(feat.Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ ์“ฐ์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰(BFS)์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ BFS๋ž€? ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์€ ๋งน๋ชฉ์  ํƒ์ƒ‰๋ฐฉ๋ฒ•์˜ ํ•˜๋‚˜๋กœ ์‹œ์ž‘ ์ •์ ์„ ๋ฐฉ๋ฌธํ•œ ํ›„ ์‹œ์ž‘ ์ •์ ์— ์ธ์ ‘ํ•œ ๋ชจ๋“  ์ •์ ๋“ค์„ ์šฐ์„  ๋ฐฉ๋ฌธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋” ์ด์ƒ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์ด ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋ชจ๋“  ์ •์ ๋“ค์— ๋Œ€ํ•ด์„œ๋„ ๋„ˆ๋น„ ์šฐ์„  ๊ฒ€์ƒ‰์„ ์ ์šฉํ•œ๋‹ค. ํ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ๋ ˆ๋ฒจ ์ˆœ์„œ๋Œ€๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. - ์œ„ํ‚ค ๋ฐฑ๊ณผ - ์‰ฝ๊ฒŒ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด์„œ ์„ค๋ช…๋“œ๋ฆด๊ฒŒ์š”! ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ง€๊ตฌ ์•ˆ์— ์„ธ ๋‚˜๋ผ๋งŒ ์žˆ๊ณ  ๋ชจ๋“  ๋‚˜๋ผ์™€ ๋‚˜๋ผ์˜ ๋„์‹œ๋“ค์„ ํƒ์ƒ‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ ๋จผ์ € ์ง€๊ตฌ์— ์žˆ๋Š” ๋‚˜๋ผ๋ฅผ ์™ผ์ชฝ๋ถ€ํ„ฐ ์–ด๋–ค ๋„์‹œ๋“ค์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋Š” ๋ฐฉ๋ฒ•์€ DF.. 2021. 6. 27.
[Swift] 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‰ฝ ๋ถˆ๋Ÿ‰ ์‚ฌ์šฉ์ž Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ถˆ๋Ÿ‰ ์‚ฌ์šฉ์ž ๊ฐœ๋ฐœํŒ€ ๋‚ด์—์„œ ์ด๋ฒคํŠธ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” "๋ฌด์ง€"๋Š” ์ตœ๊ทผ ์ง„ํ–‰๋œ ์นด์นด์˜ค์ด๋ชจํ‹ฐ์ฝ˜ ์ด๋ฒคํŠธ์— ๋น„์ •์ƒ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹น์ฒจ์„ ์‹œ๋„ํ•œ ์‘๋ชจ์ž๋“ค์„ ๋ฐœ๊ฒฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์‘๋ชจ์ž๋“ค์„ ๋”ฐ๋กœ ๋ชจ์•„ ๋ถˆ๋Ÿ‰ programmers.co.kr Solution 1. ๋ถˆ๋Ÿ‰ ์‚ฌ์šฉ์ž์™€ ์œ ์ € ์•„์ด๋””๋ฅผ ๋น„๊ตํ•œ๋‹ค. func isEqual(userId:String,bannedId:String) -> Bool { if userId.count != bannedId.count { return false } let uid = userId.map{String($0)} let bid = bannedId.map{String($0)} for (i,b) in bid.enumerated() { if b != "*" &.. 2021. 6. 26.
[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ ์•ž๋’ค๋ฅผ ๋’ค์ง‘์–ด๋„ ๋˜‘๊ฐ™์€ ๋ฌธ์ž์—ด์„ ํŒฐ๋ฆฐ๋“œ๋กฌ(palindrome)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, s์˜ ๋ถ€๋ถ„๋ฌธ์ž์—ด(Substring)์ค‘ ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ์˜ ๊ธธ์ด๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ์˜ˆ๋ฅผ๋“ค programmers.co.kr Solution ํ•ด๋‹น ๋ฌธ์ œ๋Š” ์™„์ „ํƒ์ƒ‰ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ์ •๋‹ต์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ์–ด์ง„ ๋ฌธ์ž๋ฅผ ๊ธด ๋ฌธ์ž์—ด์—์„œ ์งง์€ ๋ฌธ์ž์—ด๋กœ ์ž˜๋ผ์„œ ๋น„๊ตํ•˜๋Š”๊ฒŒ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. 1. ์ดˆ๊ธฐ๊ฐ’ ์„ค์ • ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๊ธฐ ์‰ฝ๊ฒŒ ๋ฌธ์ž์—ด์„ ๋งคํ•‘ํ•œ ๊ฐ’๊ณผ ๊ฐ€์žฅ ๊ธด ๊ฐ’์˜ ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค. //๋ฌธ์ž์—ด ์ธ๋ฑ์Šค๋ฅผ ์ฐพ๊ธฐ ์‰ฝ๊ฒŒ ๋งคํ•‘ํ•ด์คŒ let str:[String] = s.map{Stri.. 2021. 6. 22.
[Design Pattern] ReactorKit์ด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ RxSwift์™€ MVVM ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ• ๋•Œ ์•„์ฃผ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ด๋Š” ReactorKit์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ReactorKit์ด๋ž€? ReactorKit ๊ณต์‹ ๊นƒํ—ˆ๋ธŒ์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ReactorKit์€ ๋ฐ˜์‘ํ˜• ๋ฐ ๋‹จ๋ฐฉํ–ฅ Swift ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ์œ„ํ•œ ํ”„๋ ˆ์ž„ ์›Œํฌ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ReactorKit์€ ์•„๋ž˜์™€ ๊ฐ™์ด Reactor์™€ View๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š”๋ฐ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์„ Action๊ณผ State๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ViewModel ์—ญํ• ์„ Reactor๊ฐ€ ํ•˜๋Š”๋ฐ ์ด ViewModel์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ฐ˜์‘ํ˜• ์ด๋ฒคํŠธ๋“ค์„ ์•ก์…˜๊ณผ ์ƒํƒœ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ด์ฃ ! ReactorKit์„ ์“ฐ๋ฉด ๋ญ๊ฐ€ ์ข‹์€๋ฐ? 1. ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฝ๋‹ค. ๋ทฐ์—์„œ.. 2021. 6. 17.
[iOS] ํ‚ค๋ณด๋“œ๊ฐ€ ํ…์ŠคํŠธํ•„๋“œ๋ฅผ ๊ฐ€๋ฆด๋•Œ ํ•ด๊ฒฐ๋ฒ•(When the keyboard covers text field) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํ…์ŠคํŠธํ•„๋“œ๋ฅผ ๋งŒ๋“ค๋‹ค๋ณด๋ฉด ์ •๋ง ์ž์ฃผ ๋งŒ๋‚˜๋Š” ํ‚ค๋ณด๋“œ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•ด์š”. ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋ฉด ํ‚ค๋ณด๋“œ์˜ ์œ„์น˜๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์งœ๋‹ค๊ฐ€ ํ‚ค๋ณด๋“œ๊ฐ€ ์˜ฌ๋ผ์˜ค๋Š” ์ˆœ๊ฐ„ ํ‚ค๋ณด๋“œ ์•„๋ž˜์— ์žˆ๋Š” ํ…์ŠคํŠธํ•„๋“œ๋‚˜ ๋ฒ„ํŠผ๋“ค์ด ๊ฐ€๋ ค์ง€๊ณค ํ•˜๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ๋ฒ•์„ ์ •๋ฆฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! Preview Storyboard ์•„๋ž˜ ํ™”๋ฉด๊ณผ ๊ฐ™์ด ํ…์ŠคํŠธํ•„๋“œ์™€ ๋ฒ„ํŠผ์ด ๋น„๊ต์  ์•„๋ž˜์— ์žˆ๋„๋ก ๋งŒ๋“ค์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. View์—๋Š” Tap Gesture Recognizer๋ฅผ ๋‹ฌ์•„๋†“๊ฒ ์Šต๋‹ˆ๋‹ค. ViewController ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ๋งŒ๋“ค์–ด์ค€ ํ…์ŠคํŠธํ•„๋“œ์™€ ๋ฒ„ํŠผ์„ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค. @IBOutlet weak var textField: UITextField! @IBOutlet weak va.. 2021. 6. 16.
[๐Ÿ’ป Programming] Clean Code - ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„์„ ์จ๋ผ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ๊ธ€์—” ๊นจ๋—ํ•œ ์ฝ”๋“œ๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด์•˜๋Š”๋ฐ์š”. ์ด๋ฒˆ์—” ์ข€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ฒซ๋ฒˆ์งธ ๊ทœ์น™ "์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„" ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜๋„๋ฅผ ๋ถ„๋ช…ํžˆ ๋ฐํ˜€๋ผ ๋‚˜์œ ์˜ˆ โŒ ๋งŒ์•ฝ ์•„๋ž˜์™€ ๊ฐ™์€ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ญ˜ ์˜๋ฏธํ•˜๋Š”์ง€ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค. func abc(a:String,b:String) -> String { return a+b } ์ข‹์€ ์˜ˆ ๐Ÿ‘๐Ÿป ์œ„์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•จ์ˆ˜์ด์ง€๋งŒ ์•„๋ž˜์ฒ˜๋Ÿผ ์ž‘์„ฑํ•˜๋ฉด ํ™•์‹คํžˆ ์„ฑ๊ณผ ์ด๋ฆ„์„ ๋ฐ›์•„์„œ ํ’€๋„ค์ž„์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๊ตฌ๋‚˜ ๋ผ๊ณ  ์•Œ ์ˆ˜ ์žˆ๋‹ค. func makeFullName(firstName:String,lastName:String) -> String { let fullName = firstName + lastName .. 2021. 6. 13.
[๐Ÿ’ป Programming] Clean Code - ๊นจ๋—ํ•œ ์ฝ”๋“œ๋ž€? (feat.์จ์•ผํ•˜๋Š” ์ด์œ ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜๋ถ€ํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ผ๋ฉด ๊ผญ ์ฝ์–ด๋ด์•ผ ํ•˜๋Š” "ํด๋ฆฐ ์ฝ”๋“œ" ์ฑ…์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ดํ•ดํ•œ๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์œ ์ฝ”๋“œ๋ž€? ํ•ด๋…ํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ ์ƒ์‚ฐ์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ์ฝ”๋“œ ์ผ์ • ๊ธฐํ•œ์— ๊ธ‰ํ•˜๊ฒŒ ์ง  ์ฝ”๋“œ ์ฆ‰, ํ•œ๋งˆ๋””๋กœ ๊ธ‰ํ•˜๊ฒŒ ๋Œ€์ถฉ ์งœ์„œ ์ฝ”๋“œ๊ฐ€ ์ฝ๊ธฐ ์–ด๋ ค์›Œ์ง€๊ณ  ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ ์  ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋Š˜์–ด๊ฐ€๋Š” ์ฝ”๋“œ๊ฐ€ ๋‚˜์œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. "์•„๋‹ˆ ๊ทธ๋Ÿฌ๋ฉด ์ผ์ • ๊ธฐํ•œ์„ ๋นก๋นกํ•˜๊ฒŒ ์žก์€ ๊ด€๋ฆฌ์ž ์ž˜๋ชป ์•„๋‹ˆ์•ผ?" ๋ผ๊ณ  ์งˆ๋ฌธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์ฑ…์—์„œ๋Š” ์˜์‚ฌ๋ผ๋Š” ์ง์—…์œผ๋กœ ๋น„์œ ๋ฅผ ํ•˜๋Š”๋ฐ์š”. ๋งŒ์•ฝ ๋‹น์‹ ์ด ์˜์‚ฌ์ธ ์ƒํ™ฉ์—์„œ ๊ด€๋ฆฌ์ž๊ฐ€ ์‹œ๊ฐ„ ๋‚ด์— ์ˆ˜์ˆ ์„ ๋งˆ์น˜๊ธฐ ์œ„ํ•ด์„œ ์†์„ ์”ป๋Š” ๊ฒƒ์„ ์ƒ๋žตํ•˜๋ผ๊ณ  ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ๋งŒ์•ฝ ํ™˜์ž์—๊ฒŒ ๋ฌด์Šจ ์ผ์ด ์ƒ๊ฒผ๋‹ค๋ฉด ๋ˆ„๊ตฌ์˜ ์ž˜๋ชป์ด ํด๊นŒ์š”? ๋‹น์—ฐํžˆ ์ˆ˜์ˆ ์„ ๋งก์€ ์˜์‚ฌ์˜ ์ž˜๋ชป์ด ํด๊ฒ๋‹ˆ.. 2021. 6. 13.
[Flutter] ํ”Œ๋Ÿฌํ„ฐ ์›น ๋ฐฐํฌํ•˜๊ธฐ(feat.Fireabse hosting) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํŒŒ์ด์–ด๋ฒ ์ด์Šค ํ˜ธ์ŠคํŒ… ํ†ตํ•ด ํ”Œ๋Ÿฌํ„ฐ๋กœ ๋งŒ๋“  ์›น์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ํ”Œ๋Ÿฌํ„ฐ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋น„์ฅฌ์–ผ ์ŠคํŠœ๋””์˜ค์—์„œ cmd + shift + p ๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ์ƒˆ๋กœ์šด ํ”Œ๋Ÿฌํ„ฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค. Firebase Hosting ํ„ฐ๋ฏธ๋„๋กœ ์ด๋™ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ํŒŒ์ด์–ด๋ฒ ์ด์Šค ํˆด์„ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค. sudo npm install -g firebase-tools ํŒŒ์ด์–ด๋ฒ ์ด์Šค ํ˜ธ์ŠคํŒ… ์ดˆ๊ธฐ ์„ค์ •์„ ํ•ด์ค๋‹ˆ๋‹ค. firebase init hosting 1. Create a new project ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ํŒŒ์ด์–ด๋ฒ ์ด์Šค์— ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. 2. Google Cloud project id ์›ํ•˜๋Š” ์ด๋ฆ„์œผ๋กœ ์ •ํ•ด์ค๋‹ˆ๋‹ค. 3. ์›ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋กœ ์•„์ด๋””๋กœ ์„ค์ • ์•„๋ž˜์™€.. 2021. 6. 12.
[Flutter] ํ™”๋ฉด ์ด๋™ํ•˜๊ธฐ (Navigator Push & Pop) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํ”Œ๋Ÿฌํ„ฐ์—์„œ ๋‘ ํ™”๋ฉด(ScreenA์™€ ScreenB)์„ ์„œ๋กœ ์ด๋™ํ•˜๊ณ  ๋˜๋Œ์•„์˜ค๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ScreenA ScreenA๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. import 'package:flutter/material.dart'; class ScreenA extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Screen A page"), ), ); } } ScreenB ScreenB๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. import 'package:flutter/material.dart'; class Screen.. 2021. 6. 12.
[Swift] 2019 KAKAO BLIND RECRUITMENT ๊ธธ ์ฐพ๊ธฐ ๊ฒŒ์ž„ Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ธธ ์ฐพ๊ธฐ ๊ฒŒ์ž„ [[5,3],[11,5],[13,3],[3,5],[6,1],[1,3],[8,6],[7,2],[2,2]] [[7,4,6,9,1,8,5,2,3],[9,6,5,8,1,4,3,2,7]] programmers.co.kr Solution ํ•ด๋‹น ๋ฌธ์ œ๋Š” "์ด์ง„ํŠธ๋ฆฌ " ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด์ง„ ํŠธ๋ฆฌ๋Š” ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ์™€ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ผ๊ณ  ํ•œ๋‹ค. 1. ์ดˆ๊ธฐ์— ํ•„์š”ํ•œ ๋ณ€์ˆ˜๋“ค์„ ์„ธํŒ…ํ•ด์ค๋‹ˆ๋‹ค. //๋ถ€๋ชจ์™€ ์ž์‹์„ ๋‹ด์„ ์ด์ค‘๋ฐฐ์—ด var parentsChildren:[[Int]] = Array(repeating: [], count: nodeinfo.count + 1) //๊ฐ ๋…ธ๋“œ์˜ ๋ฒ”์œ„๋“ค์„ ๋‹ด์„ ๋ฐฐ์—ด var ranges = Array(r.. 2021. 6. 11.
728x90
๋ฐ˜์‘ํ˜•