๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

3๏ธโƒฃ Swift130

[Swift Algorithm] ํ† ๋งˆํ†  BOJ #7576 ๋ฌธ์ œ ์„ค๋ช… ์ฒ ์ˆ˜์˜ ํ† ๋งˆํ†  ๋†์žฅ์—์„œ๋Š” ํ† ๋งˆํ† ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ํฐ ์ฐฝ๊ณ ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ํ† ๋งˆํ† ๋Š” ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฒฉ์ž ๋ชจ์–‘ ์ƒ์ž์˜ ์นธ์— ํ•˜๋‚˜์”ฉ ๋„ฃ์–ด์„œ ์ฐฝ๊ณ ์— ๋ณด๊ด€ํ•œ๋‹ค. ์ฐฝ๊ณ ์— ๋ณด๊ด€๋˜๋Š” ํ† ๋งˆํ† ๋“ค ์ค‘์—๋Š” ์ž˜ ์ต์€ ๊ฒƒ๋„ ์žˆ์ง€๋งŒ, ์•„์ง ์ต์ง€ ์•Š์€ ํ† ๋งˆํ† ๋“ค๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ๋ณด๊ด€ ํ›„ ํ•˜๋ฃจ๊ฐ€ ์ง€๋‚˜๋ฉด, ์ต์€ ํ† ๋งˆํ† ๋“ค์˜ ์ธ์ ‘ํ•œ ๊ณณ์— ์žˆ๋Š” ์ต์ง€ ์•Š์€ ํ† ๋งˆํ† ๋“ค์€ ์ต์€ ํ† ๋งˆํ† ์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ์ต๊ฒŒ ๋œ๋‹ค. ํ•˜๋‚˜์˜ ํ† ๋งˆํ† ์˜ ์ธ์ ‘ํ•œ ๊ณณ์€ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ, ์•ž, ๋’ค ๋„ค ๋ฐฉํ–ฅ์— ์žˆ๋Š” ํ† ๋งˆํ† ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์— ์žˆ๋Š” ํ† ๋งˆํ† ๋“ค์—๊ฒŒ๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ๋ชปํ•˜๋ฉฐ, ํ† ๋งˆํ† ๊ฐ€ ํ˜ผ์ž ์ €์ ˆ๋กœ ์ต๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค. ์ฒ ์ˆ˜๋Š” ์ฐฝ๊ณ ์— ๋ณด๊ด€๋œ ํ† ๋งˆํ† ๋“ค์ด ๋ฉฐ์น ์ด ์ง€๋‚˜๋ฉด ๋‹ค ์ต๊ฒŒ ๋˜๋Š”์ง€, ๊ทธ ์ตœ์†Œ ์ผ์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ์–ด ํ•œ๋‹ค. ํ† ๋งˆํ† ๋ฅผ ์ฐฝ๊ณ ์— ๋ณด๊ด€ํ•˜๋Š” ๊ฒฉ์ž๋ชจ์–‘์˜ .. 2021. 10. 2.
[Swift Algorithm] ๋ฏธ๋กœ ํƒ์ƒ‰ BOJ #2178 ๋ฌธ์ œ ์„ค๋ช… N×Mํฌ๊ธฐ์˜ ๋ฐฐ์—ด๋กœ ํ‘œํ˜„๋˜๋Š” ๋ฏธ๋กœ๊ฐ€ ์žˆ๋‹ค. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 ๋ฏธ๋กœ์—์„œ 1์€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์นธ์„ ๋‚˜ํƒ€๋‚ด๊ณ , 0์€ ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ์นธ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฏธ๋กœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, (1, 1)์—์„œ ์ถœ๋ฐœํ•˜์—ฌ (N, M)์˜ ์œ„์น˜๋กœ ์ด๋™ํ•  ๋•Œ ์ง€๋‚˜์•ผ ํ•˜๋Š” ์ตœ์†Œ์˜ ์นธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ํ•œ ์นธ์—์„œ ๋‹ค๋ฅธ ์นธ์œผ๋กœ ์ด๋™ํ•  ๋•Œ, ์„œ๋กœ ์ธ์ ‘ํ•œ ์นธ์œผ๋กœ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ์˜ˆ์—์„œ๋Š” 15์นธ์„ ์ง€๋‚˜์•ผ (N, M)์˜ ์œ„์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์นธ์„ ์…€ ๋•Œ์—๋Š” ์‹œ์ž‘ ์œ„์น˜์™€ ๋„์ฐฉ ์œ„์น˜๋„ ํฌํ•จํ•œ๋‹ค. ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— ๋‘ ์ •์ˆ˜ N, M(2 ≤ N, M ≤ 100)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” M๊ฐœ์˜ ์ •์ˆ˜๋กœ ๋ฏธ๋กœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ์ˆ˜๋“ค์€ ๋ถ™์–ด์„œ.. 2021. 10. 1.
[Swift Algorithm] ๊ทธ๋ฆผ BOJ #1926 ๋ฌธ์ œ ์„ค๋ช… ์–ด๋–ค ํฐ ๋„ํ™”์ง€์— ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ ธ ์žˆ์„ ๋•Œ, ๊ทธ ๊ทธ๋ฆผ์˜ ๊ฐœ์ˆ˜์™€, ๊ทธ ๊ทธ๋ฆผ ์ค‘ ๋„“์ด๊ฐ€ ๊ฐ€์žฅ ๋„“์€ ๊ฒƒ์˜ ๋„“์ด๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ๋ผ. ๋‹จ, ๊ทธ๋ฆผ์ด๋ผ๋Š” ๊ฒƒ์€ 1๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์„ ํ•œ ๊ทธ๋ฆผ์ด๋ผ๊ณ  ์ •์˜ํ•˜์ž. ๊ฐ€๋กœ๋‚˜ ์„ธ๋กœ๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์€ ์—ฐ๊ฒฐ์ด ๋œ ๊ฒƒ์ด๊ณ  ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ๊ฒฐ์ด ๋œ ๊ฒƒ์€ ๋–จ์–ด์ง„ ๊ทธ๋ฆผ์ด๋‹ค. ๊ทธ๋ฆผ์˜ ๋„“์ด๋ž€ ๊ทธ๋ฆผ์— ํฌํ•จ๋œ 1์˜ ๊ฐœ์ˆ˜์ด๋‹ค. ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— ๋„ํ™”์ง€์˜ ์„ธ๋กœ ํฌ๊ธฐ n(1 ≤ n ≤ 500)๊ณผ ๊ฐ€๋กœ ํฌ๊ธฐ m(1 ≤ m ≤ 500)์ด ์ฐจ๋ก€๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ n+1 ์ค„ ๊นŒ์ง€ ๊ทธ๋ฆผ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (๋‹จ ๊ทธ๋ฆผ์˜ ์ •๋ณด๋Š” 0๊ณผ 1์ด ๊ณต๋ฐฑ์„ ๋‘๊ณ  ์ฃผ์–ด์ง€๋ฉฐ, 0์€ ์ƒ‰์น ์ด ์•ˆ๋œ ๋ถ€๋ถ„, 1์€ ์ƒ‰์น ์ด ๋œ ๋ถ€๋ถ„์„ ์˜๋ฏธํ•œ๋‹ค) ์ถœ๋ ฅ ์ฒซ์งธ ์ค„์—๋Š” ๊ทธ๋ฆผ์˜ ๊ฐœ์ˆ˜, ๋‘˜์งธ ์ค„์—๋Š” ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋„“์€ ๊ทธ๋ฆผ์˜ ๋„“์ด๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ๋ผ. ๋‹จ,.. 2021. 9. 30.
[Swift] ARC (1); ARC์˜ ๊ฐœ๋…, Retain Count ์˜ค๋Š˜์€ ARC์— ๋Œ€ํ•ด ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๋ คํ•œ๋‹ค. iOS ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ๋“ค์–ด๋ณด๊ธฐ๋Š” ๋งŽ์ด ๋“ค์–ด๋ดค๋Š”๋ฐ,, ์ด์ œ์„œ์•ผ ๊ณต๋ถ€๋ฅผ ํ•˜๋Š”๊ทœ๋‚˜ ๐Ÿ“Ž ARC (Auto Reference Counting) ์ด๋Ÿฐ ๊ฐœ๋… ์šฉ์–ด๋“ค์€ ์–ธ์ œ๋‚˜ ๊ทธ๋ ‡๋“ฏ ์ด๋ฆ„์— ๋ชจ๋“  ๊ฒƒ์ด,,! ๋ง ๊ทธ๋Œ€๋กœ '์ž๋™ ์ฐธ์กฐ ์นด์šดํŒ…'์ด๋‹ค. ํ•œ ๋‹จ์–ด์”ฉ ๋ณด๋ฉด, ์šฐ์„  ์ฐธ์กฐ๋ฅผ ์นด์šดํŒ…ํ•˜๋Š” ์ด์œ ๋Š” ๋ญ˜๊นŒ? ๐Ÿ‘‰ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•จ์ผ๋“ฏ ๊ทธ๋Ÿผ ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ํ•œ๋‹ค? ๐Ÿ‘‰ ํŽธ๋ฆฌํ•˜๊ฒŒ, ์˜ค๋ฅ˜๋ฅผ ์ ๊ฒŒ! ํ•˜๊ธฐ ์œ„ํ•จ์ผ๋“ฏ ์ด๋ ‡๊ฒŒ ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ ARC๋Š” ํšจ๊ณผ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ด๋‹ค. + ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ? ์•ฑ์˜ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ๊ธฐ๋ณธ์ธ๋ฐ, ๋ฉ”๋ชจ๋ฆฌ๋ผ๊ณ  ํ•˜๋ฉด ํฌ๊ฒŒ ์Šคํƒ ์˜์—ญ, ํž™ ์˜์—ญ ๋“ฑ์ด ์žˆ๋‹ค. ์ด ์ค‘ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ.. 2021. 9. 23.
[Swift] ํ”„๋กœํผํ‹ฐ ๊ฐœ๋… ์ •๋ฆฌ (3); ํƒ€์ž… ํ”„๋กœํผํ‹ฐ ์ด์ œ ํ”„๋กœํผํ‹ฐ ๋งˆ์ง€๋ง‰ ์ข…๋ฅ˜์ธ ํƒ€์ž… ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ์ €์žฅ ํ”„๋กœํผํ‹ฐ, ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์— ํฌํ•จ๋˜๋Š” ๋‚ด์šฉ์œผ๋กœ ๋ณผ ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค. ๐Ÿ“Ž ํƒ€์ž… ํ”„๋กœํผํ‹ฐ (Type Properties) ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋Š” ์•ž์„œ ๊ณต๋ถ€ํ–ˆ๋˜ ์ €์žฅ ํ”„๋กœํผํ‹ฐ, ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์— static๋งŒ ๋ถ™์ด๋ฉด ๋! ์ง€๊ธˆ๊นŒ์ง€ ๊ณต๋ถ€ํ•œ ํ”„๋กœํผํ‹ฐ๋“ค์€ ํƒ€์ž…์„ ์ •์˜ํ•˜๊ณ , ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ธ์Šคํ„ด์Šค๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ผ์ข…์˜ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ™์€ ๊ฐœ๋….๐Ÿ’ฅ ํ•˜์ง€๋งŒ ์ด ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋Š” ๊ฐ๊ฐ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹Œ ํƒ€์ž… ์ž์ฒด์—! ์†ํ•˜๋Š” ํ”„๋กœํผํ‹ฐ์ด๋‹ค. ์ธ์Šคํ„ด์Šค์˜ ์ƒ์„ฑ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„ ์—†์ด ํƒ€์ž… ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์€ ๋”ฑ ํ•˜๋‚˜๋ฟ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ํ•˜๋‚˜๋ฟ์ธ ๊ฐ’์€ ๊ทธ ํƒ€์ž…์˜ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์ด๋‚˜ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค์—์„œ.. 2021. 9. 22.