diff --git a/README.md b/README.md index 949ca0b..69040aa 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,15 @@ # 0-study-algorithms -๐Ÿ’œ ์ฝ”๋“œ์ž‡ ํ”„๋ก ํŠธ์—”๋“œ ๋ถ€ํŠธ์บ ํ”„ 0๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””์ž…๋‹ˆ๋‹ค.๐Ÿ’œ -## ๊ฐ€์ด๋“œ๋ผ์ธ -
์‚ฌ์ „ ์ค€๋น„๋ฌผ : ๋ฐฑ์ค€ ํ—ˆ๋ธŒ

-๋ชจ๋“  ๋ฌธ์ œ๋Š” ๋ฐฑ์ค€ ํ—ˆ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ์ „์ œ๋กœ ํ•ฉ๋‹ˆ๋‹ค๐Ÿ˜‰ -
+์ฝ”๋“œ์ž‡ FE ๋ถ€ํŠธ์บ ํ”„ 0๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””! -๐Ÿ‘‡ ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์„ค์ •ํ•˜์„ธ์š”!๐Ÿ˜† -

- -
+## ๊ฐ€์ด๋“œ ๋ผ์ธ -1. upstream repo์˜ main์—์„œ ๋ณธ์ธ ์ด๋ฆ„(ex. eva) ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. -2. fork๋ฅผ ํ•œํ›„ fork๋œ origin ๋ ˆํฌ๋ฅผ cloneํ•œ๋‹ค. -4. ๋กœ์ปฌ์—์„œ main๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—… ํ›„ origin ๋ ˆํฌ์˜ main์— pushํ•œ๋‹ค. - - `git push origin main` -5. upstream repo์˜ ๋ณธ์ธ ์ด๋ฆ„ ๋ธŒ๋žœ์น˜์— pr์„ ๋‚ ๋ฆฐ๋‹ค~ -
+1. ์ฝ”๋“œ์ž‡ organization์— ์žˆ๋Š” upstream repo์˜ main ๋ธŒ๋žœ์น˜์—์„œ ๋ณธ์ธ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค(๋‚˜๋Š” henry๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ํ™œ๋™ ์ค‘์ด๋‹ค). +2. upstream repo๋ฅผ fork ํ•œ ๋’ค, origin repo๋ฅผ ๋กœ์ปฌ์—์„œ cloneํ•œ๋‹ค. (๋ฐฑ์ค€ ํ—ˆ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ์ปฌ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•  ํ•„์š” ์—†๋‹ค) +3. ์–ด์จŒ๋“  origin main ๋ธŒ๋žœ์น˜์—์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด๋“ค์„ ๊ด€๋ฆฌํ•œ๋‹ค. +4. upstream repo์˜ ๋ณธ์ธ ๋ธŒ๋žœ์น˜์— PR(๋งˆ๊ฐ๊ธฐํ•œ : ์ผ์š”์ผ ์ž์ •)์„ ํ•œ๋‹ค. -## โœ… commit ๊ทœ์น™ -- commit ๋ฉ”์„ธ์ง€: [๋ฌธ์ œ ์ถœ์ฒ˜(ํ”Œ๋žซํผ)] ๋ฌธ์ œ์ด๋ฆ„ / ๋‚œ์ด๋„ / ๊ฑธ๋ฆฐ์‹œ๊ฐ„ -- description: ๋ฌธ์ œ ์ฃผ์†Œ (option) -- ํ„ฐ๋ฏธ๋„์—์„œ ์ž‘์„ฑ๋ฒ•: -``` -git commit -m "[BOJ] Hello World / ๋ธŒ๋ก ์ฆˆ5 / 1๋ถ„" -m "https://www.acmicpc.net/problem/2557" -``` -- ํ”Œ๋žซํผ ์ž‘์„ฑ๋ฒ• ํ†ต์ผ: - * [BOJ] - ๋ฐฑ์ค€ - * [PGS] - ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - * [FSC] - ํŒจ์ŠคํŠธ์บ ํผ์Šค - * [LTC] - ๋ฆฌํŠธ์ฝ”๋“œ - * [CFS] - ์ฝ”๋“œํฌ์Šค - * [SEA] - ์‚ผ์„ฑSW Expert Academy - * [ETC] - ๊ทธ์™ธ - -

- -## โœ… PR ๊ทœ์น™ -
์ผ์š”์ผ ์ž์ •๊นŒ์ง€ pr ๋‚ ๋ฆฌ๊ธฐ!
- -- PR ์ œ๋ชฉ: ์ด๋ฆ„ / n์›” n์ฃผ์ฐจ / ๋ช‡ ๋ฌธ์ œ -- ```eva / 5์›” 1์ฃผ์ฐจ / 4๋ฌธ์ œ ``` - -- comment๋Š” ์ž์œ ์ด๋‚˜ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด, ์ด๋ฒˆ์ฃผ์— ํ’€์—ˆ๋˜ ๋ฌธ์ œ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€,
์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์–ด๋ ค์› ๋Š”์ง€ ํšŒ๊ณ ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ๊ฐœ์ธ์—๊ฒŒ๋„ ๋„์›€๋˜๊ณ  ๋‹ค๋ฅธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์ฐธ๊ณ ํ•˜๊ธฐ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค :) -- ๋ฐฑ์ค€ ํ—ˆ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด commit์„ ํ•  ํ•„์š” ์—†์œผ๋ฏ€๋กœ ์œ„์—์„œ ๋ช…์‹œํ•œ commit ๋ฉ”์‹œ์ง€๋ฅผ PR์— ํฌํ•จํ•ด์„œ ์ž‘์„ฑํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค! +## ์Šคํ„ฐ๋”” ๋ฐฉ์‹ +1. ์ฝ”๋“œ์ž‡ ์ •๊ทœ ์ปค๋ฆฌํ˜๋Ÿผ์„ ์†Œํ™”ํ•˜๊ธฐ๋„ ๋ฒ…์ฐจ๋ฉฐ, ๊ฐ์ž ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹ค๋ ฅ์˜ ํŽธ์ฐจ๊ฐ€ ๋‹ค๋ฅด๋ฏ€๋กœ "๊ธฐ๋ก"์„ ์ตœ์šฐ์„  ๋ชฉํ‘œ๋กœ ์„ค์ •ํ–ˆ๋‹ค. +2. ๋งค์ฃผ ๋ณธ์ธ์ด ์ •ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ๊ฐœ์ˆ˜๋งŒํผ ํ’€๊ณ  ๊ณต์œ ํ•œ๋‹ค. diff --git "a/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv0/120803.\342\200\205\353\221\220\342\200\205\354\210\230\354\235\230\342\200\205\354\260\250/README.md" "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv0/120803.\342\200\205\353\221\220\342\200\205\354\210\230\354\235\230\342\200\205\354\260\250/README.md" new file mode 100644 index 0000000..e67a378 --- /dev/null +++ "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv0/120803.\342\200\205\353\221\220\342\200\205\354\210\230\354\235\230\342\200\205\354\260\250/README.md" @@ -0,0 +1,69 @@ +# [level 0] ๋‘ ์ˆ˜์˜ ์ฐจ - 120803 + +[๋ฌธ์ œ ๋งํฌ](https://school.programmers.co.kr/learn/courses/30/lessons/120803) + +### ์„ฑ๋Šฅ ์š”์•ฝ + +๋ฉ”๋ชจ๋ฆฌ: 33.4 MB, ์‹œ๊ฐ„: 0.03 ms + +### ๊ตฌ๋ถ„ + +์ฝ”๋”ฉํ…Œ์ŠคํŠธโ€…์—ฐ์Šต > ์ฝ”๋”ฉํ…Œ์ŠคํŠธโ€…์ž…๋ฌธ + +### ์ฑ„์ ๊ฒฐ๊ณผ + +
์ •ํ™•์„ฑ: 100.0
ํ•ฉ๊ณ„: 100.0 / 100.0 + +### ๋ฌธ์ œ ์„ค๋ช… + +

์ •์ˆ˜ num1๊ณผ num2๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, num1์—์„œ num2๋ฅผ ๋บ€ ๊ฐ’์„ returnํ•˜๋„๋ก soltuion ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

+ +
+ +
์ œํ•œ์‚ฌํ•ญ
+ + + +
+ +

์ž…์ถœ๋ ฅ ์˜ˆ

+ + + + + + + + + + + + + + + + + + +
num1num2result
23-1
100298
+
+ +
์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…
+ +

์ž…์ถœ๋ ฅ ์˜ˆ #1

+ + + +

์ž…์ถœ๋ ฅ ์˜ˆ #2

+ + + + +> ์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges \ No newline at end of file diff --git "a/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv0/120803.\342\200\205\353\221\220\342\200\205\354\210\230\354\235\230\342\200\205\354\260\250/\353\221\220\342\200\205\354\210\230\354\235\230\342\200\205\354\260\250.js" "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv0/120803.\342\200\205\353\221\220\342\200\205\354\210\230\354\235\230\342\200\205\354\260\250/\353\221\220\342\200\205\354\210\230\354\235\230\342\200\205\354\260\250.js" new file mode 100644 index 0000000..2dff566 --- /dev/null +++ "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv0/120803.\342\200\205\353\221\220\342\200\205\354\210\230\354\235\230\342\200\205\354\260\250/\353\221\220\342\200\205\354\210\230\354\235\230\342\200\205\354\260\250.js" @@ -0,0 +1,3 @@ +function solution(num1, num2) { + return num1 - num2 +} \ No newline at end of file diff --git "a/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/72415.\342\200\205\354\271\264\353\223\234\342\200\205\354\247\235\342\200\205\353\247\236\354\266\224\352\270\260/README.md" "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/72415.\342\200\205\354\271\264\353\223\234\342\200\205\354\247\235\342\200\205\353\247\236\354\266\224\352\270\260/README.md" new file mode 100644 index 0000000..86e88fa --- /dev/null +++ "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/72415.\342\200\205\354\271\264\353\223\234\342\200\205\354\247\235\342\200\205\353\247\236\354\266\224\352\270\260/README.md" @@ -0,0 +1,133 @@ +# [level 3] ์นด๋“œ ์ง ๋งž์ถ”๊ธฐ - 72415 + +[๋ฌธ์ œ ๋งํฌ](https://school.programmers.co.kr/learn/courses/30/lessons/72415) + +### ์„ฑ๋Šฅ ์š”์•ฝ + +๋ฉ”๋ชจ๋ฆฌ: 38.7 MB, ์‹œ๊ฐ„: 7.70 ms + +### ๊ตฌ๋ถ„ + +์ฝ”๋”ฉํ…Œ์ŠคํŠธโ€…์—ฐ์Šต > 2021โ€…KAKAOโ€…BLINDโ€…RECRUITMENT + +### ์ฑ„์ ๊ฒฐ๊ณผ + +
์ •ํ™•์„ฑ: 100.0
ํ•ฉ๊ณ„: 100.0 / 100.0 + +### ๋ฌธ์ œ ์„ค๋ช… + +

๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž์ธ ๋ฒ ๋กœ๋‹ˆ๋Š” ๊ฐœ๋ฐœ ์—ฐ์Šต์„ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ์นด๋“œ ์ง๋งž์ถ”๊ธฐ ๋ณด๋“œ ๊ฒŒ์ž„์„ ๊ฐœ๋ฐœํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
+๊ฒŒ์ž„์ด ์‹œ์ž‘๋˜๋ฉด ํ™”๋ฉด์—๋Š” ์นด๋“œ 16์žฅ์ด ๋’ท๋ฉด์„ ์œ„๋กœํ•˜์—ฌ 4 x 4 ํฌ๊ธฐ์˜ ๊ฒฉ์ž ํ˜•ํƒœ๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์นด๋“œ์˜ ์•ž๋ฉด์—๋Š” ์นด์นด์˜คํ”„๋ Œ์ฆˆ ์บ๋ฆญํ„ฐ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ ธ ์žˆ์œผ๋ฉฐ, 8๊ฐ€์ง€์˜ ์บ๋ฆญํ„ฐ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ง„ ์นด๋“œ๊ฐ€ ๊ฐ๊ธฐ 2์žฅ์”ฉ ํ™”๋ฉด์— ๋ฌด์ž‘์œ„๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
+์œ ์ €๊ฐ€ ์นด๋“œ๋ฅผ 2์žฅ ์„ ํƒํ•˜์—ฌ ์•ž๋ฉด์œผ๋กœ ๋’ค์ง‘์—ˆ์„ ๋•Œ ๊ฐ™์€ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ง„ ์นด๋“œ๋ฉด ํ•ด๋‹น ์นด๋“œ๋Š” ๊ฒŒ์ž„ ํ™”๋ฉด์—์„œ ์‚ฌ๋ผ์ง€๋ฉฐ, ๊ฐ™์€ ๊ทธ๋ฆผ์ด ์•„๋‹ˆ๋ผ๋ฉด ์›๋ž˜ ์ƒํƒœ๋กœ ๋’ท๋ฉด์ด ๋ณด์ด๋„๋ก ๋’ค์ง‘ํž™๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋“  ์นด๋“œ๋ฅผ ํ™”๋ฉด์—์„œ ์‚ฌ๋ผ์ง€๊ฒŒ ํ•˜๋ฉด ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

+ +

๊ฒŒ์ž„์—์„œ ์นด๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

+ + + +

"๋ฒ ๋กœ๋‹ˆ"๋Š” ๊ฒŒ์ž„ ์ง„ํ–‰ ์ค‘ ์นด๋“œ์˜ ์ง์„ ๋งž์ถฐ ๋ช‡ ์žฅ ์ œ๊ฑฐ๋œ ์ƒํƒœ์—์„œ ์นด๋“œ ์•ž๋ฉด์˜ ๊ทธ๋ฆผ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด, ๋‚จ์€ ์นด๋“œ๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ํ‚ค ์กฐ์ž‘ ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ‚ค ์กฐ์ž‘ ํšŸ์ˆ˜๋Š” ๋ฐฉํ–ฅํ‚ค์™€ [Enter] ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋Š” ๋™์ž‘์„ ๊ฐ๊ฐ ์กฐ์ž‘ ํšŸ์ˆ˜ 1๋กœ ๊ณ„์‚ฐํ•˜๋ฉฐ, [Ctrl] ํ‚ค์™€ ๋ฐฉํ–ฅํ‚ค๋ฅผ ํ•จ๊ป˜ ๋ˆ„๋ฅด๋Š” ๋™์ž‘ ๋˜ํ•œ ์กฐ์ž‘ ํšŸ์ˆ˜ 1๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

+ +

๋‹ค์Œ์€ ์นด๋“œ๊ฐ€ ๋ช‡ ์žฅ ์ œ๊ฑฐ๋œ ์ƒํƒœ์˜ ๊ฒŒ์ž„ ํ™”๋ฉด์—์„œ ์ปค์„œ๋ฅผ ์ด๋™ํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.
+์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ๋นˆ ์นธ์€ ์ด๋ฏธ ์นด๋“œ๊ฐ€ ์ œ๊ฑฐ๋˜์–ด ์—†์–ด์ง„ ์นธ์„ ์˜๋ฏธํ•˜๋ฉฐ, ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ง„ ์นธ์€ ์นด๋“œ ์•ž ๋ฉด์— ๊ทธ๋ ค์ง„ ๊ทธ๋ฆผ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

+ +

2021_kakao_card_01.png
+์˜ˆ์‹œ์—์„œ ์ปค์„œ๋Š” ๋‘๋ฒˆ์งธ ํ–‰, ์ฒซ๋ฒˆ์งธ ์—ด ์œ„์น˜์—์„œ ์‹œ์ž‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
+2021_kakao_card_02.png
+[Enter] ์ž…๋ ฅ, โ†“ ์ด๋™, [Ctrl]+โ†’ ์ด๋™, [Enter] ์ž…๋ ฅ = ํ‚ค ์กฐ์ž‘ 4ํšŒ
+2021_kakao_card_03.png
+[Ctrl]+โ†‘ ์ด๋™, [Enter] ์ž…๋ ฅ, [Ctrl]+โ† ์ด๋™, [Ctrl]+โ†“ ์ด๋™, [Enter] ์ž…๋ ฅ = ํ‚ค ์กฐ์ž‘ 5ํšŒ
+2021_kakao_card_04.png
+[Ctrl]+โ†’ ์ด๋™, [Enter] ์ž…๋ ฅ, [Ctrl]+โ†‘ ์ด๋™, [Ctrl]+โ† ์ด๋™, [Enter] ์ž…๋ ฅ = ํ‚ค ์กฐ์ž‘ 5ํšŒ

+ +

์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ปค์„œ๋ฅผ ์ด๋™ํ•˜์—ฌ ์นด๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ๊ทธ๋ฆผ์„ ๋งž์ถ”์–ด ์นด๋“œ๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด 14๋ฒˆ(๋ฐฉํ–ฅ ์ด๋™ 8๋ฒˆ, [Enter] ํ‚ค ์ž…๋ ฅ 6๋ฒˆ)์˜ ํ‚ค ์กฐ์ž‘ ํšŸ์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

+ +
+ +

[๋ฌธ์ œ]

+ +

ํ˜„์žฌ ์นด๋“œ๊ฐ€ ๋†“์ธ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 2์ฐจ์› ๋ฐฐ์—ด board์™€ ์ปค์„œ์˜ ์ฒ˜์Œ ์œ„์น˜ r, c๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋ชจ๋“  ์นด๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค ์กฐ์ž‘ ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

+ +

[์ œํ•œ์‚ฌํ•ญ]

+ + + +
+ +
[์ž…์ถœ๋ ฅ ์˜ˆ]
+ + + + + + + + + + + + + + + + + + + + + +
boardrcresult
[[1,0,0,3],[2,0,0,0],[0,0,0,2],[3,0,1,0]]1014
[[3,0,0,2],[0,0,1,0],[0,1,0,0],[2,0,0,3]]0116
+
์ž…์ถœ๋ ฅ ์˜ˆ์— ๋Œ€ํ•œ ์„ค๋ช…
+ +
+ +

์ž…์ถœ๋ ฅ ์˜ˆ #1
+๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

+ +

์ž…์ถœ๋ ฅ ์˜ˆ #2
+์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๊ฒŒ์ž„ ํ™”๋ฉด์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

+ +

2021_kakao_card_05.png

+ +

์œ„ ๊ฒŒ์ž„ ํ™”๋ฉด์—์„œ ๋ชจ๋“  ์นด๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค ์กฐ์ž‘ ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์€ 16๋ฒˆ ์ž…๋‹ˆ๋‹ค.

+ + +> ์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges \ No newline at end of file diff --git "a/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/72415.\342\200\205\354\271\264\353\223\234\342\200\205\354\247\235\342\200\205\353\247\236\354\266\224\352\270\260/\354\271\264\353\223\234\342\200\205\354\247\235\342\200\205\353\247\236\354\266\224\352\270\260.js" "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/72415.\342\200\205\354\271\264\353\223\234\342\200\205\354\247\235\342\200\205\353\247\236\354\266\224\352\270\260/\354\271\264\353\223\234\342\200\205\354\247\235\342\200\205\353\247\236\354\266\224\352\270\260.js" new file mode 100644 index 0000000..e42d86c --- /dev/null +++ "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/72415.\342\200\205\354\271\264\353\223\234\342\200\205\354\247\235\342\200\205\353\247\236\354\266\224\352\270\260/\354\271\264\353\223\234\342\200\205\354\247\235\342\200\205\353\247\236\354\266\224\352\270\260.js" @@ -0,0 +1,85 @@ +const solution = (board, r, c) => { + // ์ถœ์ฒ˜ : https://www.youtube.com/watch?v=Q4bTSdi1psw&t=2s + const bfs = (visited, src, dst) => { + const out = (x, y) => x < 0 || x > 3 || y < 0 || y > 3; + + const dir = [ + [-1, 0], + [1, 0], + [0, -1], + [0, 1], + ]; + + const graph = Array.from({ length: 4 }, () => Array(4).fill(false)); + const queue = [[...src, 0]]; + + while (queue.length) { + const [y, x, cnt] = queue.shift(); + if (y === dst[0] && x === dst[1]) { + return cnt; + } + for (const [dy, dx] of dir) { + let [ny, nx] = [y + dy, x + dx]; + + if (out(ny, nx)) continue; + + if (!graph[ny][nx]) { + graph[ny][nx] = true; + queue.push([ny, nx, cnt + 1]); + } + + for (let i = 0; i < 2; i++) { + if (!(visited & (1 << board[ny][nx]))) break; + if (out(ny + dy, nx + dx)) break; + + [ny, nx] = [ny + dy, nx + dx]; + } + if (!graph[ny][nx]) { + graph[ny][nx] = true; + queue.push([ny, nx, cnt + 1]); + } + } + } + + return Infinity; + }; + + const permutate = (cnt, visited, src) => { + if (visited === allVisited) { + answer = Math.min(answer, cnt); + return; + } + for (const [card, pos] of card_pos.entries()) { + if (visited & (1 << card)) continue; + + const first = + bfs(visited, src, pos[0]) + bfs(visited, pos[0], pos[1]) + 2; + const second = + bfs(visited, src, pos[1]) + bfs(visited, pos[1], pos[0]) + 2; + + permutate(cnt + first, visited | (1 << card), pos[1]); + permutate(cnt + second, visited | (1 << card), pos[0]); + } + }; + + const card_pos = new Map(); + + let allVisited = 1; + let answer = Infinity; + + board.forEach((row, y) => { + row.forEach((card, x) => { + if (!card) return; + + if (card_pos.has(card)) { + card_pos.get(card).push([y, x]); + return; + } + card_pos.set(card, [[y, x]]); + allVisited |= 1 << card; + }); + }); + + permutate(0, 1, [r, c]); + return answer; +}; \ No newline at end of file diff --git "a/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/92345.\342\200\205\354\202\254\353\235\274\354\247\200\353\212\224\342\200\205\353\260\234\355\214\220/README.md" "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/92345.\342\200\205\354\202\254\353\235\274\354\247\200\353\212\224\342\200\205\353\260\234\355\214\220/README.md" new file mode 100644 index 0000000..fac6952 --- /dev/null +++ "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/92345.\342\200\205\354\202\254\353\235\274\354\247\200\353\212\224\342\200\205\353\260\234\355\214\220/README.md" @@ -0,0 +1,175 @@ +# [level 3] ์‚ฌ๋ผ์ง€๋Š” ๋ฐœํŒ - 92345 + +[๋ฌธ์ œ ๋งํฌ](https://school.programmers.co.kr/learn/courses/30/lessons/92345) + +### ์„ฑ๋Šฅ ์š”์•ฝ + +๋ฉ”๋ชจ๋ฆฌ: 33.4 MB, ์‹œ๊ฐ„: 0.24 ms + +### ๊ตฌ๋ถ„ + +์ฝ”๋”ฉํ…Œ์ŠคํŠธโ€…์—ฐ์Šต > 2022โ€…KAKAOโ€…BLINDโ€…RECRUITMENT + +### ์ฑ„์ ๊ฒฐ๊ณผ + +
์ •ํ™•์„ฑ: 100.0
ํ•ฉ๊ณ„: 100.0 / 100.0 + +### ๋ฌธ์ œ ์„ค๋ช… + +
๋ฌธ์ œ ์„ค๋ช…
+ +

ํ”Œ๋ ˆ์ด์–ด A์™€ ํ”Œ๋ ˆ์ด์–ด B๊ฐ€ ์„œ๋กœ ๊ฒŒ์ž„์„ ํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ด ๊ฒŒ์ž„์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์–‘ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์บ๋ฆญํ„ฐ๋ฅผ ๋ช‡ ๋ฒˆ ์›€์ง์ด๊ฒŒ ๋ ์ง€ ์˜ˆ์ธกํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

+ +

๊ฐ ํ”Œ๋ ˆ์ด์–ด๋Š” ์ž์‹ ์˜ ์บ๋ฆญํ„ฐ ํ•˜๋‚˜๋ฅผ ๋ณด๋“œ ์œ„์— ์˜ฌ๋ ค๋†“๊ณ  ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฒŒ์ž„ ๋ณด๋“œ๋Š” 1x1 ํฌ๊ธฐ ์ •์‚ฌ๊ฐ ๊ฒฉ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๋ณด๋“œ ์•ˆ์—๋Š” ๋ฐœํŒ์ด ์žˆ๋Š” ๋ถ€๋ถ„๊ณผ ์—†๋Š” ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐœํŒ์ด ์žˆ๋Š” ๊ณณ์—๋งŒ ์บ๋ฆญํ„ฐ๊ฐ€ ์„œ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฒ˜์Œ ์บ๋ฆญํ„ฐ๋ฅผ ์˜ฌ๋ ค๋†“๋Š” ๊ณณ์€ ํ•ญ์ƒ ๋ฐœํŒ์ด ์žˆ๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ์บ๋ฆญํ„ฐ๋Š” ๋ฐœํŒ์ด ์žˆ๋Š” ๊ณณ์œผ๋กœ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ณด๋“œ ๋ฐ–์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐŸ๊ณ  ์žˆ๋˜ ๋ฐœํŒ์€ ๊ทธ ์œ„์— ์žˆ๋˜ ์บ๋ฆญํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๋‹ค๋ฅธ ๋ฐœํŒ์„ ๋ฐž์Œ๊ณผ ๋™์‹œ์— ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์–‘ ํ”Œ๋ ˆ์ด์–ด๋Š” ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์ž๊ธฐ ์ฐจ๋ก€์— ์ž์‹ ์˜ ์บ๋ฆญํ„ฐ๋ฅผ ์ƒํ•˜์ขŒ์šฐ๋กœ ์ธ์ ‘ํ•œ 4๊ฐœ์˜ ์นธ ์ค‘์—์„œ ๋ฐœํŒ์ด ์žˆ๋Š” ์นธ์œผ๋กœ ์˜ฎ๊ฒจ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

+ +

๋‹ค์Œ๊ณผ ๊ฐ™์€ 2๊ฐ€์ง€ ์ƒํ™ฉ์—์„œ ํŒจ์ž์™€ ์Šน์ž๊ฐ€ ์ •ํ•ด์ง€๋ฉฐ, ๊ฒŒ์ž„์ด ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

+ + + +

๊ฒŒ์ž„์€ ํ•ญ์ƒ ํ”Œ๋ ˆ์ด์–ด A๊ฐ€ ๋จผ์ € ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์–‘ ํ”Œ๋ ˆ์ด์–ด๋Š” ์ตœ์ ์˜ ํ”Œ๋ ˆ์ด๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ด๊ธธ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด๋Š” ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์Šน๋ฆฌํ•˜๋„๋ก ํ”Œ๋ ˆ์ดํ•˜๊ณ , ์งˆ ์ˆ˜๋ฐ–์— ์—†๋Š” ํ”Œ๋ ˆ์ด์–ด๋Š” ์ตœ๋Œ€ํ•œ ์˜ค๋ž˜ ๋ฒ„ํ‹ฐ๋„๋ก ํ”Œ๋ ˆ์ดํ•ฉ๋‹ˆ๋‹ค. '์ด๊ธธ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด'๋Š” ์‹ค์ˆ˜๋งŒ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•ญ์ƒ ์ด๊ธฐ๋Š” ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, '์งˆ ์ˆ˜๋ฐ–์— ์—†๋Š” ํ”Œ๋ ˆ์ด์–ด'๋Š” ์ตœ์„ ์„ ๋‹คํ•ด๋„ ์ƒ๋Œ€๊ฐ€ ์‹ค์ˆ˜ํ•˜์ง€ ์•Š์œผ๋ฉด ํ•ญ์ƒ ์งˆ ์ˆ˜๋ฐ–์— ์—†๋Š” ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ํ•œ ์˜ค๋ž˜ ๋ฒ„ํ‹ด๋‹ค๋Š” ๊ฒƒ์€ ์–‘ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์บ๋ฆญํ„ฐ๋ฅผ ์›€์ง์ด๋Š” ํšŸ์ˆ˜๋ฅผ ์ตœ๋Œ€ํ™”ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

+ +

์•„๋ž˜ ๊ทธ๋ฆผ์€ ์ดˆ๊ธฐ ๋ณด๋“œ์˜ ์ƒํƒœ์™€ ๊ฐ ํ”Œ๋ ˆ์ด์–ด์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

+ +

02_2022_๊ณต์ฑ„๋ฌธ์ œ_์‚ฌ๋ผ์ง€๋Š”๋ฐœํŒ_01.png

+ +

์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ, ํ”Œ๋ ˆ์ด์–ด A๋Š” ์‹ค์ˆ˜๋งŒ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•ญ์ƒ ์ด๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”Œ๋ ˆ์ด์–ด A๋Š” ์ด๊ธธ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด์ด๋ฉฐ, B๋Š” ์งˆ ์ˆ˜๋ฐ–์— ์—†๋Š” ํ”Œ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ A์™€ B๊ฐ€ ์ตœ์ ์˜ ํ”Œ๋ ˆ์ด๋ฅผ ํ•˜๋Š” ๊ณผ์ •์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

+ +
    +
  1. ํ”Œ๋ ˆ์ด์–ด A๊ฐ€ ์ดˆ๊ธฐ ์œ„์น˜ (1, 0)์—์„œ (1, 1)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋ ˆ์ด์–ด A๊ฐ€ (0, 0)์ด๋‚˜ (2, 0)์œผ๋กœ ์ด๋™ํ•  ๊ฒฝ์šฐ ์Šน๋ฆฌ๋ฅผ ๋ณด์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌด์กฐ๊ฑด ์ด๊ธธ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š” (1, 1)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. +
  3. ํ”Œ๋ ˆ์ด์–ด B๋Š” (1, 1)๋กœ ์ด๋™ํ•  ๊ฒฝ์šฐ, ๋ฐ”๋กœ ๋‹ค์Œ ์ฐจ๋ก€์— A๊ฐ€ ์œ„ ๋˜๋Š” ์•„๋ž˜ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๋ฉด ๋ฐœํŒ์ด ์—†์–ด์ ธ ํŒจ๋ฐฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์งˆ ์ˆ˜๋ฐ–์— ์—†๋Š” ํ”Œ๋ ˆ์ด์–ด๋Š” ์ตœ๋Œ€ํ•œ ์˜ค๋ž˜ ๋ฒ„ํ‹ฐ๋„๋ก ํ”Œ๋ ˆ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— (1, 1)๋กœ ์ด๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (1, 2)์—์„œ ์œ„์ชฝ ์นธ์ธ (0, 2)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  4. +
  5. A๊ฐ€ (1, 1)์—์„œ (0, 1)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  6. +
  7. B์—๊ฒŒ๋Š” ๋‚จ์€ ์„ ํƒ์ง€๊ฐ€ (0, 1)๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ (0, 2)์—์„œ (0, 1)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  8. +
  9. A๊ฐ€ (0, 1)์—์„œ (0, 0)์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋™์„ ์™„๋ฃŒํ•จ๊ณผ ๋™์‹œ์— B๊ฐ€ ์„œ์žˆ๋˜ (0, 1)์˜ ๋ฐœํŒ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. B๊ฐ€ ํŒจ๋ฐฐํ•ฉ๋‹ˆ๋‹ค.
  10. +
  11. ๋งŒ์•ฝ ๊ณผ์ • 2์—์„œ B๊ฐ€ ์•„๋ž˜์ชฝ ์นธ์ธ (2, 2)๋กœ ์ด๋™ํ•˜๋”๋ผ๋„ A๋Š” (2, 1)๋กœ ์ด๋™ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ดํ›„ B๊ฐ€ (2, 1)๋กœ ์ด๋™, ๋‹ค์Œ ์ฐจ๋ก€์— A๊ฐ€ (2, 0)์œผ๋กœ ์ด๋™ํ•˜๋ฉด B๊ฐ€ ํŒจ๋ฐฐํ•ฉ๋‹ˆ๋‹ค.
  12. +
+ +

์œ„ ์˜ˆ์‹œ์—์„œ ์–‘ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ตœ์ ์˜ ํ”Œ๋ ˆ์ด๋ฅผ ํ–ˆ์„ ๊ฒฝ์šฐ, ์บ๋ฆญํ„ฐ์˜ ์ด๋™ ํšŸ์ˆ˜ ํ•ฉ์€ 5์ž…๋‹ˆ๋‹ค. ์ตœ์ ์˜ ํ”Œ๋ ˆ์ด๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ผ ์ˆ˜ ์žˆ์œผ๋‚˜, ์ด๋™ํ•œ ํšŸ์ˆ˜๋Š” ๋ชจ๋‘ 5๋กœ ๊ฐ™์Šต๋‹ˆ๋‹ค.

+ +

๊ฒŒ์ž„ ๋ณด๋“œ์˜ ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 2์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด board์™€ ํ”Œ๋ ˆ์ด์–ด A์˜ ์บ๋ฆญํ„ฐ ์ดˆ๊ธฐ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด aloc, ํ”Œ๋ ˆ์ด์–ด B์˜ ์บ๋ฆญํ„ฐ ์ดˆ๊ธฐ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด bloc์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์–‘ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ตœ์ ์˜ ํ”Œ๋ ˆ์ด๋ฅผ ํ–ˆ์„ ๋•Œ, ๋‘ ์บ๋ฆญํ„ฐ๊ฐ€ ์›€์ง์ธ ํšŸ์ˆ˜์˜ ํ•ฉ์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

+ +
+ +
์ œํ•œ์‚ฌํ•ญ
+ + + +
+ +
์ž…์ถœ๋ ฅ ์˜ˆ
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
boardalocblocresult
[[1, 1, 1], [1, 1, 1], [1, 1, 1]][1, 0][1, 2]5
[[1, 1, 1], [1, 0, 1], [1, 1, 1]][1, 0][1, 2]4
[[1, 1, 1, 1, 1]][0, 0][0, 4]4
[[1]][0, 0][0, 0]0
+
+ +
์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…
+ +

์ž…์ถœ๋ ฅ ์˜ˆ #1

+ +

๋ฌธ์ œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

+ +

์ž…์ถœ๋ ฅ ์˜ˆ #2

+ +

์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

+ +

02_2022_๊ณต์ฑ„๋ฌธ์ œ_์‚ฌ๋ผ์ง€๋Š”๋ฐœํŒ_02.png

+ +

ํ•ญ์ƒ ์ด๊ธฐ๋Š” ํ”Œ๋ ˆ์ด์–ด๋Š” B, ํ•ญ์ƒ ์ง€๋Š” ํ”Œ๋ ˆ์ด์–ด๋Š” A์ž…๋‹ˆ๋‹ค.

+ +

๋‹ค์Œ์€ B๊ฐ€ ์ด๊ธฐ๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

+ +
    +
  1. A๊ฐ€ (1, 0)์—์„œ (0, 0)์œผ๋กœ ์ด๋™
  2. +
  3. B๊ฐ€ (1, 2)์—์„œ (2, 2)๋กœ ์ด๋™
  4. +
  5. A๊ฐ€ (0, 0)์—์„œ (0, 1)๋กœ ์ด๋™
  6. +
  7. B๊ฐ€ (2, 2)์—์„œ (2, 1)๋กœ ์ด๋™
  8. +
  9. A๊ฐ€ (0, 1)์—์„œ (0, 2)๋กœ ์ด๋™
  10. +
  11. B๊ฐ€ (2, 1)์—์„œ (2, 0)์œผ๋กœ ์ด๋™
  12. +
  13. A๋Š” ๋” ์ด์ƒ ์ด๋™ํ•  ์ˆ˜ ์—†์–ด ํŒจ๋ฐฐํ•ฉ๋‹ˆ๋‹ค.
  14. +
+ +

์œ„์™€ ๊ฐ™์ด ํ”Œ๋ ˆ์ดํ•  ๊ฒฝ์šฐ ์ด๋™ ํšŸ์ˆ˜ 6๋ฒˆ ๋งŒ์— ๊ฒŒ์ž„์„ B์˜ ์Šน๋ฆฌ๋กœ ๋๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ +

B๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ”Œ๋ ˆ์ดํ•  ๊ฒฝ์šฐ ๊ฒŒ์ž„์„ ๋” ๋นจ๋ฆฌ ๋๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ธธ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋ ˆ์ด์–ด๋Š” ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๊ฒŒ์ž„์„ ๋๋‚ด๋ ค ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„ ๋ฐฉ๋ฒ• ๋Œ€์‹  ์•„๋ž˜ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

+ +
    +
  1. A๊ฐ€ (1, 0)์—์„œ (0, 0)์œผ๋กœ ์ด๋™
  2. +
  3. B๊ฐ€ (1, 2)์—์„œ (0, 2)๋กœ ์ด๋™
  4. +
  5. A๊ฐ€ (0, 0)์—์„œ (0, 1)๋กœ ์ด๋™
  6. +
  7. B๊ฐ€ (0, 2)์—์„œ (0, 1)๋กœ ์ด๋™
  8. +
  9. A๋Š” ๋” ์ด์ƒ ์ด๋™ํ•  ์ˆ˜ ์—†์–ด ํŒจ๋ฐฐํ•ฉ๋‹ˆ๋‹ค.
  10. +
+ +

์œ„์™€ ๊ฐ™์ด ํ”Œ๋ ˆ์ดํ•  ๊ฒฝ์šฐ ์ด๋™ ํšŸ์ˆ˜ 4๋ฒˆ ๋งŒ์— ๊ฒŒ์ž„์„ B์˜ ์Šน๋ฆฌ๋กœ ๋๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 4๋ฅผ return ํ•ฉ๋‹ˆ๋‹ค.

+ +

์ž…์ถœ๋ ฅ ์˜ˆ #3

+ +

์–‘ ํ”Œ๋ ˆ์ด์–ด๋Š” ๋งค ์ฐจ๋ก€๋งˆ๋‹ค ํ•œ ๊ฐ€์ง€ ์„ ํƒ์ง€๋ฐ–์— ๊ณ ๋ฅผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, (0, 2)์—์„œ ์–ด๋””๋กœ๋„ ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” A๊ฐ€ ํŒจ๋ฐฐํ•ฉ๋‹ˆ๋‹ค. ์–‘ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์บ๋ฆญํ„ฐ๋ฅผ ์›€์ง์ธ ํšŸ์ˆ˜์˜ ํ•ฉ์€ 4์ž…๋‹ˆ๋‹ค.

+ +

์ž…์ถœ๋ ฅ ์˜ˆ #4

+ +

๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•˜๋Š” ํ”Œ๋ ˆ์ด์–ด A๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ์–ด๋””๋กœ๋„ ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ A์˜ ํŒจ๋ฐฐ์ด๋ฉฐ, ์ด๋™ ํšŸ์ˆ˜์˜ ํ•ฉ์€ 0์ž…๋‹ˆ๋‹ค.

+ +
+ +
์ œํ•œ์‹œ๊ฐ„ ์•ˆ๋‚ด
+ + + + +> ์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges \ No newline at end of file diff --git "a/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/92345.\342\200\205\354\202\254\353\235\274\354\247\200\353\212\224\342\200\205\353\260\234\355\214\220/\354\202\254\353\235\274\354\247\200\353\212\224\342\200\205\353\260\234\355\214\220.js" "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/92345.\342\200\205\354\202\254\353\235\274\354\247\200\353\212\224\342\200\205\353\260\234\355\214\220/\354\202\254\353\235\274\354\247\200\353\212\224\342\200\205\353\260\234\355\214\220.js" new file mode 100644 index 0000000..1f78488 --- /dev/null +++ "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/lv3/92345.\342\200\205\354\202\254\353\235\274\354\247\200\353\212\224\342\200\205\353\260\234\355\214\220/\354\202\254\353\235\274\354\247\200\353\212\224\342\200\205\353\260\234\355\214\220.js" @@ -0,0 +1,50 @@ +const solution = (board, aloc, bloc) => { + const dir = [ + [0, 1], + [0, -1], + [1, 0], + [-1, 0], + ]; + + const row = board.length; + const col = board[0].length; + + const out = (y, x) => { + if (y < 0 || y >= row || x < 0 || x >= col || !board[y][x]) return false; + return true; + }; + + const dfs = ([ay, ax], [by, bx], turn, cnt) => { + if (!board[ay][ax] || !board[by][bx]) return { win: false, cnt: cnt }; + + let win_cnt = Infinity; + let lose_cnt = 0; + + const [currentY, currentX] = turn === 0 ? [ay, ax] : [by, bx]; + + board[currentY][currentX] = 0; + + for (let i = 0; i < 4; i++) { + const [y, x] = dir[i]; + const [dy, dx] = [currentY + y, currentX + x]; + + if (!out(dy, dx)) continue; + + const nextTurn = + turn === 0 + ? dfs([dy, dx], [by, bx], 1 - turn, cnt + 1) + : dfs([ay, ax], [dy, dx], 1 - turn, cnt + 1); + + if (nextTurn.win === false) win_cnt = Math.min(win_cnt, nextTurn.cnt); + else lose_cnt = Math.max(lose_cnt, nextTurn.cnt); + } + + board[currentY][currentX] = 1; + + if (win_cnt === Infinity && lose_cnt === 0) return { win: false, cnt }; + if (win_cnt !== Infinity) return { win: true, cnt: win_cnt }; + return { win: false, cnt: lose_cnt }; + }; + + return dfs(aloc, bloc, 0, 0).cnt; +}; \ No newline at end of file diff --git "a/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/unrated/150366.\342\200\205\355\221\234\342\200\205\353\263\221\355\225\251/README.md" "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/unrated/150366.\342\200\205\355\221\234\342\200\205\353\263\221\355\225\251/README.md" new file mode 100644 index 0000000..e86dada --- /dev/null +++ "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/unrated/150366.\342\200\205\355\221\234\342\200\205\353\263\221\355\225\251/README.md" @@ -0,0 +1,287 @@ +# [unrated] ํ‘œ ๋ณ‘ํ•ฉ - 150366 + +[๋ฌธ์ œ ๋งํฌ](https://school.programmers.co.kr/learn/courses/30/lessons/150366?language=javascript) + +### ์„ฑ๋Šฅ ์š”์•ฝ + +๋ฉ”๋ชจ๋ฆฌ: 38 MB, ์‹œ๊ฐ„: 21.48 ms + +### ๊ตฌ๋ถ„ + +์ฝ”๋”ฉํ…Œ์ŠคํŠธโ€…์—ฐ์Šต > 2023โ€…KAKAOโ€…BLINDโ€…RECRUITMENT + +### ์ฑ„์ ๊ฒฐ๊ณผ + +
์ •ํ™•์„ฑ: 100.0
ํ•ฉ๊ณ„: 100.0 / 100.0 + +### ๋ฌธ์ œ ์„ค๋ช… + +

๋‹น์‹ ์€ ํ‘œ ํŽธ์ง‘ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
+ํ‘œ์˜ ํฌ๊ธฐ๋Š” 50 ร— 50์œผ๋กœ ๊ณ ์ •๋˜์–ด์žˆ๊ณ  ์ดˆ๊ธฐ์— ๋ชจ๋“  ์…€์€ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
+๊ฐ ์…€์€ ๋ฌธ์ž์—ด ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ , ๋‹ค๋ฅธ ์…€๊ณผ ๋ณ‘ํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+์œ„์—์„œ r๋ฒˆ์งธ, ์™ผ์ชฝ์—์„œ c๋ฒˆ์งธ ์œ„์น˜๋ฅผ (r, c)๋ผ๊ณ  ํ‘œํ˜„ํ•  ๋•Œ, ๋‹น์‹ ์€ ๋‹ค์Œ ๋ช…๋ น์–ด๋“ค์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

+ +
    +
  1. "UPDATE r c value" + +
  2. +
  3. "UPDATE value1 value2" + +
  4. +
  5. "MERGE r1 c1 r2 c2"
    + +
  6. +
  7. "UNMERGE r c" + +
  8. +
  9. "PRINT r c" + +
  10. +
+ +

์•„๋ž˜๋Š” UPDATE ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋นˆ ์…€์— ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
commandsํšจ๊ณผ
UPDATE 1 1 menu(1,1)์— "menu" ์ž…๋ ฅ
UPDATE 1 2 category(1,2)์— "category" ์ž…๋ ฅ
UPDATE 2 1 bibimbap(2,1)์— "bibimbap" ์ž…๋ ฅ
UPDATE 2 2 korean(2,2)์— "korean" ์ž…๋ ฅ
UPDATE 2 3 rice(2,3)์— "rice" ์ž…๋ ฅ
UPDATE 3 1 ramyeon(3,1)์— "ramyeon" ์ž…๋ ฅ
UPDATE 3 2 korean(3,2)์— "korean" ์ž…๋ ฅ
UPDATE 3 3 noodle(3,3)์— "noodle" ์ž…๋ ฅ
UPDATE 3 4 instant(3,4)์— "instant" ์ž…๋ ฅ
UPDATE 4 1 pasta(4,1)์— "pasta" ์ž…๋ ฅ
UPDATE 4 2 italian(4,2)์— "italian" ์ž…๋ ฅ
UPDATE 4 3 noodle(4,3)์— "noodle" ์ž…๋ ฅ
+

์œ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

+ +

1-1.png

+ +

์•„๋ž˜๋Š” MERGE ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์…€์„ ๋ณ‘ํ•ฉํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

+ + + + + + + + + + + + + + + +
commandsํšจ๊ณผ
MERGE 1 2 1 3(1,2)์™€ (1,3) ๋ณ‘ํ•ฉ
MERGE 1 3 1 4(1,3)๊ณผ (1,4) ๋ณ‘ํ•ฉ
+

์œ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

+ +

1-2.png

+ +

๋ณ‘ํ•ฉํ•œ ์…€์€ "category" ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉฐ (1,2), (1,3), (1,4) ์ค‘ ์–ด๋А ์œ„์น˜๋ฅผ ์„ ํƒํ•˜๋”๋ผ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+ +

์•„๋ž˜๋Š” UPDATE ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์…€์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

+ + + + + + + + + + + + + + + +
commandsํšจ๊ณผ
UPDATE korean hansik"korean"์„ "hansik"์œผ๋กœ ๋ณ€๊ฒฝ
UPDATE 1 3 group(1,3) ์œ„์น˜์˜ ์…€ ๊ฐ’์„ "group"์œผ๋กœ ๋ณ€๊ฒฝ
+

์œ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

+ +

1-3.png

+ +

์•„๋ž˜๋Š” UNMERGE ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์…€์˜ ๋ณ‘ํ•ฉ์„ ํ•ด์ œํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

+ + + + + + + + + + + +
commandsํšจ๊ณผ
UNMERGE 1 4์…€ ๋ณ‘ํ•ฉ ํ•ด์ œ ํ›„ ์›๋ž˜ ๊ฐ’์€ (1,4)๊ฐ€ ๊ฐ€์ง
+

์œ„ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

+ +

1-4.png

+ +

์‹คํ–‰ํ•  ๋ช…๋ น์–ด๋“ค์ด ๋‹ด๊ธด 1์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด commands๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. commands์˜ ๋ช…๋ น์–ด๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•˜์˜€์„ ๋•Œ, "PRINT r c" ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ 1์ฐจ์› ๋ฌธ์ž์—ด ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

+ +
+ +
์ œํ•œ์‚ฌํ•ญ
+ + + +
+ +
์ž…์ถœ๋ ฅ ์˜ˆ
+ + + + + + + + + + + + + + + +
commandsresult
["UPDATE 1 1 menu", "UPDATE 1 2 category", "UPDATE 2 1 bibimbap", "UPDATE 2 2 korean", "UPDATE 2 3 rice", "UPDATE 3 1 ramyeon", "UPDATE 3 2 korean", "UPDATE 3 3 noodle", "UPDATE 3 4 instant", "UPDATE 4 1 pasta", "UPDATE 4 2 italian", "UPDATE 4 3 noodle", "MERGE 1 2 1 3", "MERGE 1 3 1 4", "UPDATE korean hansik", "UPDATE 1 3 group", "UNMERGE 1 4", "PRINT 1 3", "PRINT 1 4"]["EMPTY", "group"]
["UPDATE 1 1 a", "UPDATE 1 2 b", "UPDATE 2 1 c", "UPDATE 2 2 d", "MERGE 1 1 1 2", "MERGE 2 2 2 1", "MERGE 2 1 1 1", "PRINT 1 1", "UNMERGE 2 2", "PRINT 1 1"]["d", "EMPTY"]
+
+ +
์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…
+ +

์ž…์ถœ๋ ฅ ์˜ˆ #1

+ + + +

์ž…์ถœ๋ ฅ ์˜ˆ #2

+ + + +

2-1.png

+ + + +

2-2.png

+ + + +

2-3.png

+ + + +

2-4.png

+ + + +

2-5.png

+ + +> ์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges \ No newline at end of file diff --git "a/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/unrated/150366.\342\200\205\355\221\234\342\200\205\353\263\221\355\225\251/\355\221\234\342\200\205\353\263\221\355\225\251.js" "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/unrated/150366.\342\200\205\355\221\234\342\200\205\353\263\221\355\225\251/\355\221\234\342\200\205\353\263\221\355\225\251.js" new file mode 100644 index 0000000..cff3f9e --- /dev/null +++ "b/\355\224\204\353\241\234\352\267\270\353\236\230\353\250\270\354\212\244/unrated/150366.\342\200\205\355\221\234\342\200\205\353\263\221\355\225\251/\355\221\234\342\200\205\353\263\221\355\225\251.js" @@ -0,0 +1,70 @@ +class Table { + count = 0; + _table = new Array(50) + .fill(0) + .map(() => new Array(50).fill(0).map(() => ({}))); + + getCell(r, c) { + return this._table[r - 1][c - 1]; + } + setCell(r, c, value) { + this._table[r - 1][c - 1] = value; + } + update(...params) { + if (params[2] != null) { + const [r, c, value] = params; + const cell = this.getCell(r, c); + cell.value = value; + } else { + const [value1, value2] = params; + + this._table.forEach((row) => { + row.forEach((cell) => { + if (cell && cell.value === value1) cell.value = value2; + }); + }); + } + } + + replaceCell(cell1, cell2) { + this._table = this._table.map((row) => + row.map((cell) => (cell === cell1 ? cell2 : cell)) + ); + } + + merge(r1, c1, r2, c2) { + const cell1 = this.getCell(r1, c1); + const cell2 = this.getCell(r2, c2); + + if (cell1.value == null) { + this.replaceCell(cell1, cell2); + } else { + this.replaceCell(cell2, cell1); + } + } + + unmerge(r, c) { + const cell = this.getCell(r, c); + + this._table = this._table.map((row) => { + return row.map((c) => (c == cell ? {} : c)); + }); + this.setCell(r, c, cell); + } + + print(r, c) { + return this.getCell(r, c).value || "EMPTY"; + } +} + +function solution(commands) { + const table = new Table(); + const answer = []; + + commands.forEach((line) => { + const [command, ...params] = line.split(" "); + const result = table[command.toLowerCase()](...params); + if (result) answer.push(result); + }); + return answer; +} \ No newline at end of file