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๊ธฐ ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋! -๐ ์๋ ์ฌ์ง์ฒ๋ผ ์ค์ ํ์ธ์!๐ -
-๋ชจ๋ ๋ฌธ์ ๋ ๋ฐฑ์ค ํ๋ธ๋ฅผ ์ฌ์ฉํด์ ์ฌ๋ฆฌ๋ ๊ฒ์ ์ ์ ๋ก ํฉ๋๋ค๐ -
-์ผ์์ผ ์์ ๊น์ง pr ๋ ๋ฆฌ๊ธฐ!- -- PR ์ ๋ชฉ: ์ด๋ฆ / n์ n์ฃผ์ฐจ / ๋ช ๋ฌธ์ -- ```eva / 5์ 1์ฃผ์ฐจ / 4๋ฌธ์ ``` - -- comment๋ ์์ ์ด๋ ๊ฐ๋ฅํ๋ค๋ฉด, ์ด๋ฒ์ฃผ์ ํ์๋ ๋ฌธ์ ์ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๊ฐ ์ด๋ป๊ฒ ๋๋์ง,
์ ์ num1๊ณผ num2๊ฐ ์ฃผ์ด์ง ๋, num1์์ num2๋ฅผ ๋บ ๊ฐ์ returnํ๋๋ก soltuion ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
num1 โค 50000num2 โค 50000| num1 | +num2 | +result | +
|---|---|---|
| 2 | +3 | +-1 | +
| 100 | +2 | +98 | +
์ ์ถ๋ ฅ ์ #1
+ +num1์ด 2์ด๊ณ num2๊ฐ 3์ด๋ฏ๋ก 2 - 3 = -1์ returnํฉ๋๋ค.์ ์ถ๋ ฅ ์ #2
+ +num1์ด 100์ด๊ณ num2๊ฐ 2์ด๋ฏ๋ก 100 - 2 = 98์ returnํฉ๋๋ค.๊ฒ์ ๊ฐ๋ฐ์์ธ ๋ฒ ๋ก๋๋ ๊ฐ๋ฐ ์ฐ์ต์ ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋จํ ์นด๋ ์ง๋ง์ถ๊ธฐ ๋ณด๋ ๊ฒ์์ ๊ฐ๋ฐํด ๋ณด๋ ค๊ณ ํฉ๋๋ค.
+๊ฒ์์ด ์์๋๋ฉด ํ๋ฉด์๋ ์นด๋ 16์ฅ์ด ๋ท๋ฉด์ ์๋กํ์ฌ 4 x 4 ํฌ๊ธฐ์ ๊ฒฉ์ ํํ๋ก ํ์๋์ด ์์ต๋๋ค. ๊ฐ ์นด๋์ ์๋ฉด์๋ ์นด์นด์คํ๋ ์ฆ ์บ๋ฆญํฐ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ ธ ์์ผ๋ฉฐ, 8๊ฐ์ง์ ์บ๋ฆญํฐ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ง ์นด๋๊ฐ ๊ฐ๊ธฐ 2์ฅ์ฉ ํ๋ฉด์ ๋ฌด์์๋ก ๋ฐฐ์น๋์ด ์์ต๋๋ค.
+์ ์ ๊ฐ ์นด๋๋ฅผ 2์ฅ ์ ํํ์ฌ ์๋ฉด์ผ๋ก ๋ค์ง์์ ๋ ๊ฐ์ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ง ์นด๋๋ฉด ํด๋น ์นด๋๋ ๊ฒ์ ํ๋ฉด์์ ์ฌ๋ผ์ง๋ฉฐ, ๊ฐ์ ๊ทธ๋ฆผ์ด ์๋๋ผ๋ฉด ์๋ ์ํ๋ก ๋ท๋ฉด์ด ๋ณด์ด๋๋ก ๋ค์งํ๋๋ค. ์ด์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ชจ๋ ์นด๋๋ฅผ ํ๋ฉด์์ ์ฌ๋ผ์ง๊ฒ ํ๋ฉด ๊ฒ์์ด ์ข
๋ฃ๋ฉ๋๋ค.
๊ฒ์์์ ์นด๋๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
+ +์ปค์๋ฅผ ์ด์ฉํด์ ์ ํํ ์ ์์ต๋๋ค.
+
+"๋ฒ ๋ก๋"๋ ๊ฒ์ ์งํ ์ค ์นด๋์ ์ง์ ๋ง์ถฐ ๋ช ์ฅ ์ ๊ฑฐ๋ ์ํ์์ ์นด๋ ์๋ฉด์ ๊ทธ๋ฆผ์ ์๊ณ ์๋ค๋ฉด, ๋จ์ ์นด๋๋ฅผ ๋ชจ๋ ์ ๊ฑฐํ๋๋ฐ ํ์ํ ํค ์กฐ์ ํ์์ ์ต์๊ฐ์ ๊ตฌํด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ํค ์กฐ์ ํ์๋ ๋ฐฉํฅํค์ [Enter] ํค๋ฅผ ๋๋ฅด๋ ๋์์ ๊ฐ๊ฐ ์กฐ์ ํ์ 1๋ก ๊ณ์ฐํ๋ฉฐ, [Ctrl] ํค์ ๋ฐฉํฅํค๋ฅผ ํจ๊ป ๋๋ฅด๋ ๋์ ๋ํ ์กฐ์ ํ์ 1๋ก ๊ณ์ฐํฉ๋๋ค.
๋ค์์ ์นด๋๊ฐ ๋ช ์ฅ ์ ๊ฑฐ๋ ์ํ์ ๊ฒ์ ํ๋ฉด์์ ์ปค์๋ฅผ ์ด๋ํ๋ ์์์
๋๋ค.
+์๋ ๊ทธ๋ฆผ์์ ๋น ์นธ์ ์ด๋ฏธ ์นด๋๊ฐ ์ ๊ฑฐ๋์ด ์์ด์ง ์นธ์ ์๋ฏธํ๋ฉฐ, ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ง ์นธ์ ์นด๋ ์ ๋ฉด์ ๊ทธ๋ ค์ง ๊ทธ๋ฆผ์ ๋ํ๋
๋๋ค.

+์์์์ ์ปค์๋ ๋๋ฒ์งธ ํ, ์ฒซ๋ฒ์งธ ์ด ์์น์์ ์์ํ์์ต๋๋ค.
+
+[Enter] ์
๋ ฅ, โ ์ด๋, [Ctrl]+โ ์ด๋, [Enter] ์
๋ ฅ = ํค ์กฐ์ 4ํ
+
+[Ctrl]+โ ์ด๋, [Enter] ์
๋ ฅ, [Ctrl]+โ ์ด๋, [Ctrl]+โ ์ด๋, [Enter] ์
๋ ฅ = ํค ์กฐ์ 5ํ
+
+[Ctrl]+โ ์ด๋, [Enter] ์
๋ ฅ, [Ctrl]+โ ์ด๋, [Ctrl]+โ ์ด๋, [Enter] ์
๋ ฅ = ํค ์กฐ์ 5ํ
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ปค์๋ฅผ ์ด๋ํ์ฌ ์นด๋๋ฅผ ์ ํํ๊ณ ๊ทธ๋ฆผ์ ๋ง์ถ์ด ์นด๋๋ฅผ ๋ชจ๋ ์ ๊ฑฐํ๊ธฐ ์ํด์๋ ์ด 14๋ฒ(๋ฐฉํฅ ์ด๋ 8๋ฒ, [Enter] ํค ์ ๋ ฅ 6๋ฒ)์ ํค ์กฐ์ ํ์๊ฐ ํ์ํฉ๋๋ค.
+ +ํ์ฌ ์นด๋๊ฐ ๋์ธ ์ํ๋ฅผ ๋ํ๋ด๋ 2์ฐจ์ ๋ฐฐ์ด board์ ์ปค์์ ์ฒ์ ์์น r, c๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ชจ๋ ์นด๋๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํ ํค ์กฐ์ ํ์์ ์ต์๊ฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
+ +| board | +r | +c | +result | +
|---|---|---|---|
| [[1,0,0,3],[2,0,0,0],[0,0,0,2],[3,0,1,0]] | +1 | +0 | +14 | +
| [[3,0,0,2],[0,0,1,0],[0,1,0,0],[2,0,0,3]] | +0 | +1 | +16 | +
์
์ถ๋ ฅ ์ #1
+๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
+์
๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๊ฒ์ ํ๋ฉด์ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ต๋๋ค.

์ ๊ฒ์ ํ๋ฉด์์ ๋ชจ๋ ์นด๋๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํ ํค ์กฐ์ ํ์์ ์ต์๊ฐ์ 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 + +### ์ฑ์ ๊ฒฐ๊ณผ + +ํ๋ ์ด์ด A์ ํ๋ ์ด์ด B๊ฐ ์๋ก ๊ฒ์์ ํฉ๋๋ค. ๋น์ ์ ์ด ๊ฒ์์ด ๋๋ ๋๊น์ง ์ ํ๋ ์ด์ด๊ฐ ์บ๋ฆญํฐ๋ฅผ ๋ช ๋ฒ ์์ง์ด๊ฒ ๋ ์ง ์์ธกํ๋ ค๊ณ ํฉ๋๋ค.
+ +๊ฐ ํ๋ ์ด์ด๋ ์์ ์ ์บ๋ฆญํฐ ํ๋๋ฅผ ๋ณด๋ ์์ ์ฌ๋ ค๋๊ณ ๊ฒ์์ ์์ํฉ๋๋ค. ๊ฒ์ ๋ณด๋๋ 1x1 ํฌ๊ธฐ ์ ์ฌ๊ฐ ๊ฒฉ์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๋ณด๋ ์์๋ ๋ฐํ์ด ์๋ ๋ถ๋ถ๊ณผ ์๋ ๋ถ๋ถ์ด ์์ต๋๋ค. ๋ฐํ์ด ์๋ ๊ณณ์๋ง ์บ๋ฆญํฐ๊ฐ ์์์ ์ ์์ผ๋ฉฐ, ์ฒ์ ์บ๋ฆญํฐ๋ฅผ ์ฌ๋ ค๋๋ ๊ณณ์ ํญ์ ๋ฐํ์ด ์๋ ๊ณณ์ ๋๋ค. ์บ๋ฆญํฐ๋ ๋ฐํ์ด ์๋ ๊ณณ์ผ๋ก๋ง ์ด๋ํ ์ ์์ผ๋ฉฐ, ๋ณด๋ ๋ฐ์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค. ๋ฐ๊ณ ์๋ ๋ฐํ์ ๊ทธ ์์ ์๋ ์บ๋ฆญํฐ๊ฐ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ด๋ํ์ฌ ๋ค๋ฅธ ๋ฐํ์ ๋ฐ์๊ณผ ๋์์ ์ฌ๋ผ์ง๋๋ค. ์ ํ๋ ์ด์ด๋ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์๊ธฐ ์ฐจ๋ก์ ์์ ์ ์บ๋ฆญํฐ๋ฅผ ์ํ์ข์ฐ๋ก ์ธ์ ํ 4๊ฐ์ ์นธ ์ค์์ ๋ฐํ์ด ์๋ ์นธ์ผ๋ก ์ฎ๊ฒจ์ผ ํฉ๋๋ค.
+ +๋ค์๊ณผ ๊ฐ์ 2๊ฐ์ง ์ํฉ์์ ํจ์์ ์น์๊ฐ ์ ํด์ง๋ฉฐ, ๊ฒ์์ด ์ข ๋ฃ๋ฉ๋๋ค.
+ +๊ฒ์์ ํญ์ ํ๋ ์ด์ด A๊ฐ ๋จผ์ ์์ํฉ๋๋ค. ์ ํ๋ ์ด์ด๋ ์ต์ ์ ํ๋ ์ด๋ฅผ ํฉ๋๋ค. ์ฆ, ์ด๊ธธ ์ ์๋ ํ๋ ์ด์ด๋ ์ต๋ํ ๋นจ๋ฆฌ ์น๋ฆฌํ๋๋ก ํ๋ ์ดํ๊ณ , ์ง ์๋ฐ์ ์๋ ํ๋ ์ด์ด๋ ์ต๋ํ ์ค๋ ๋ฒํฐ๋๋ก ํ๋ ์ดํฉ๋๋ค. '์ด๊ธธ ์ ์๋ ํ๋ ์ด์ด'๋ ์ค์๋ง ํ์ง ์๋๋ค๋ฉด ํญ์ ์ด๊ธฐ๋ ํ๋ ์ด์ด๋ฅผ ์๋ฏธํ๋ฉฐ, '์ง ์๋ฐ์ ์๋ ํ๋ ์ด์ด'๋ ์ต์ ์ ๋คํด๋ ์๋๊ฐ ์ค์ํ์ง ์์ผ๋ฉด ํญ์ ์ง ์๋ฐ์ ์๋ ํ๋ ์ด์ด๋ฅผ ์๋ฏธํฉ๋๋ค. ์ต๋ํ ์ค๋ ๋ฒํด๋ค๋ ๊ฒ์ ์ ํ๋ ์ด์ด๊ฐ ์บ๋ฆญํฐ๋ฅผ ์์ง์ด๋ ํ์๋ฅผ ์ต๋ํํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
+ +์๋ ๊ทธ๋ฆผ์ ์ด๊ธฐ ๋ณด๋์ ์ํ์ ๊ฐ ํ๋ ์ด์ด์ ์์น๋ฅผ ๋ํ๋ด๋ ์์์ ๋๋ค.
+ +
์์ ๊ฐ์ ๊ฒฝ์ฐ, ํ๋ ์ด์ด A๋ ์ค์๋ง ํ์ง ์๋๋ค๋ฉด ํญ์ ์ด๊ธธ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ๋ ์ด์ด A๋ ์ด๊ธธ ์ ์๋ ํ๋ ์ด์ด์ด๋ฉฐ, B๋ ์ง ์๋ฐ์ ์๋ ํ๋ ์ด์ด์ ๋๋ค. ๋ค์์ A์ B๊ฐ ์ต์ ์ ํ๋ ์ด๋ฅผ ํ๋ ๊ณผ์ ์ ๋ํ๋ ๋๋ค.
+ +์ ์์์์ ์ ํ๋ ์ด์ด๊ฐ ์ต์ ์ ํ๋ ์ด๋ฅผ ํ์ ๊ฒฝ์ฐ, ์บ๋ฆญํฐ์ ์ด๋ ํ์ ํฉ์ 5์ ๋๋ค. ์ต์ ์ ํ๋ ์ด๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ง์ผ ์ ์์ผ๋, ์ด๋ํ ํ์๋ ๋ชจ๋ 5๋ก ๊ฐ์ต๋๋ค.
+ +๊ฒ์ ๋ณด๋์ ์ด๊ธฐ ์ํ๋ฅผ ๋ํ๋ด๋ 2์ฐจ์ ์ ์ ๋ฐฐ์ด board์ ํ๋ ์ด์ด A์ ์บ๋ฆญํฐ ์ด๊ธฐ ์์น๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด aloc, ํ๋ ์ด์ด B์ ์บ๋ฆญํฐ ์ด๊ธฐ ์์น๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด bloc์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ ํ๋ ์ด์ด๊ฐ ์ต์ ์ ํ๋ ์ด๋ฅผ ํ์ ๋, ๋ ์บ๋ฆญํฐ๊ฐ ์์ง์ธ ํ์์ ํฉ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
board์ ์ธ๋ก ๊ธธ์ด โค 5board์ ๊ฐ๋ก ๊ธธ์ด โค 5board์ ์์๋ 0 ๋๋ 1์
๋๋ค.
+
+board์ ์ธ๋ก ๊ธธ์ด - 1, board์ ๊ฐ๋ก ๊ธธ์ด - 1)์
๋๋ค.aloc๊ณผ bloc์ ๊ฐ๊ฐ ํ๋ ์ด์ด A์ ์บ๋ฆญํฐ์ ํ๋ ์ด์ด B์ ์บ๋ฆญํฐ ์ด๊ธฐ ์์น๋ฅผ ๋ํ๋ด๋ ์ขํ๊ฐ์ด๋ฉฐ [r, c] ํํ์
๋๋ค.
+
+board์ ์ธ๋ก ๊ธธ์ดboard์ ๊ฐ๋ก ๊ธธ์ดaloc๊ณผ bloc ์์น๋ ํญ์ ๋ฐํ์ด ์๋ ๊ณณ์
๋๋ค.aloc๊ณผ bloc์ด ๊ฐ์ ์ ์์ต๋๋ค.| board | +aloc | +bloc | +result | +
|---|---|---|---|
| [[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
+ +์ฃผ์ด์ง ์กฐ๊ฑด์ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
+ +
ํญ์ ์ด๊ธฐ๋ ํ๋ ์ด์ด๋ B, ํญ์ ์ง๋ ํ๋ ์ด์ด๋ A์ ๋๋ค.
+ +๋ค์์ B๊ฐ ์ด๊ธฐ๋ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค.
+ +์์ ๊ฐ์ด ํ๋ ์ดํ ๊ฒฝ์ฐ ์ด๋ ํ์ 6๋ฒ ๋ง์ ๊ฒ์์ B์ ์น๋ฆฌ๋ก ๋๋ผ ์ ์์ต๋๋ค.
+ +B๊ฐ ๋ค์๊ณผ ๊ฐ์ด ํ๋ ์ดํ ๊ฒฝ์ฐ ๊ฒ์์ ๋ ๋นจ๋ฆฌ ๋๋ผ ์ ์์ต๋๋ค. ์ด๊ธธ ์ ์๋ ํ๋ ์ด์ด๋ ์ต๋ํ ๋นจ๋ฆฌ ๊ฒ์์ ๋๋ด๋ ค ํ๊ธฐ ๋๋ฌธ์ ์ ๋ฐฉ๋ฒ ๋์ ์๋ ๋ฐฉ๋ฒ์ ์ ํํฉ๋๋ค.
+ +์์ ๊ฐ์ด ํ๋ ์ดํ ๊ฒฝ์ฐ ์ด๋ ํ์ 4๋ฒ ๋ง์ ๊ฒ์์ B์ ์น๋ฆฌ๋ก ๋๋ผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ 4๋ฅผ return ํฉ๋๋ค.
+ +์ ์ถ๋ ฅ ์ #3
+ +์ ํ๋ ์ด์ด๋ ๋งค ์ฐจ๋ก๋ง๋ค ํ ๊ฐ์ง ์ ํ์ง๋ฐ์ ๊ณ ๋ฅผ ์ ์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ, (0, 2)์์ ์ด๋๋ก๋ ์ด๋ํ ์ ์๋ A๊ฐ ํจ๋ฐฐํฉ๋๋ค. ์ ํ๋ ์ด์ด๊ฐ ์บ๋ฆญํฐ๋ฅผ ์์ง์ธ ํ์์ ํฉ์ 4์ ๋๋ค.
+ +์ ์ถ๋ ฅ ์ #4
+ +๊ฒ์์ ์์ํ๋ ํ๋ ์ด์ด A๊ฐ ์ฒ์๋ถํฐ ์ด๋๋ก๋ ์ด๋ํ ์ ์๋ ์ํ์ ๋๋ค. ๋ฐ๋ผ์ A์ ํจ๋ฐฐ์ด๋ฉฐ, ์ด๋ ํ์์ ํฉ์ 0์ ๋๋ค.
+ +๋น์ ์ ํ ํธ์ง ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ณ ์์ต๋๋ค.
+ํ์ ํฌ๊ธฐ๋ 50 ร 50์ผ๋ก ๊ณ ์ ๋์ด์๊ณ ์ด๊ธฐ์ ๋ชจ๋ ์
์ ๋น์ด ์์ต๋๋ค.
+๊ฐ ์
์ ๋ฌธ์์ด ๊ฐ์ ๊ฐ์ง ์ ์๊ณ , ๋ค๋ฅธ ์
๊ณผ ๋ณํฉ๋ ์ ์์ต๋๋ค.
+์์์ r๋ฒ์งธ, ์ผ์ชฝ์์ c๋ฒ์งธ ์์น๋ฅผ (r, c)๋ผ๊ณ ํํํ ๋, ๋น์ ์ ๋ค์ ๋ช
๋ น์ด๋ค์ ๋ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ค๊ณ ํฉ๋๋ค.
"UPDATE r c value"
+
+r, c) ์์น์ ์
์ ์ ํํฉ๋๋ค.value๋ก ๋ฐ๊ฟ๋๋ค."UPDATE value1 value2"
+
+value1์ ๊ฐ์ผ๋ก ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ์
์ ์ ํํฉ๋๋ค.value2๋ก ๋ฐ๊ฟ๋๋ค."MERGE r1 c1 r2 c2"r1, c1) ์์น์ ์
๊ณผ (r2, c2) ์์น์ ์
์ ์ ํํ์ฌ ๋ณํฉํฉ๋๋ค.r1, c1) ์์น์ ์
๊ณผ (r2, c2) ์์น์ ์
๋ง ์ํฅ์ ๋ฐ์ผ๋ฉฐ, ๊ทธ ์ฌ์ด์ ์์นํ ์
๋ค์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.r1, c1) ์์น์ ์
๊ฐ์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.r1, c1) ์ (r2, c2) ์ค ์ด๋ ์์น๋ฅผ ์ ํํ์ฌ๋ ๋ณํฉ๋ ์
๋ก ์ ๊ทผํฉ๋๋ค."UNMERGE r c"
+
+r, c) ์์น์ ์
์ ์ ํํ์ฌ ํด๋น ์
์ ๋ชจ๋ ๋ณํฉ์ ํด์ ํฉ๋๋ค.r, c) ์์น์ ์
์ด ๊ทธ ๊ฐ์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค."PRINT r c"
+
+r, c) ์์น์ ์
์ ์ ํํ์ฌ ์
์ ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค."EMPTY"๋ฅผ ์ถ๋ ฅํฉ๋๋ค.์๋๋ 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" ์
๋ ฅ |
+
์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
+ +
์๋๋ MERGE ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์
์ ๋ณํฉํ๋ ์์์
๋๋ค.
| commands | +ํจ๊ณผ | +
|---|---|
| MERGE 1 2 1 3 | +(1,2)์ (1,3) ๋ณํฉ | +
| MERGE 1 3 1 4 | +(1,3)๊ณผ (1,4) ๋ณํฉ | +
์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
+ +
๋ณํฉํ ์
์ "category" ๊ฐ์ ๊ฐ์ง๊ฒ ๋๋ฉฐ (1,2), (1,3), (1,4) ์ค ์ด๋ ์์น๋ฅผ ์ ํํ๋๋ผ๋ ์ ๊ทผํ ์ ์์ต๋๋ค.
์๋๋ UPDATE ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์
์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ์์์
๋๋ค.
| commands | +ํจ๊ณผ | +
|---|---|
| UPDATE korean hansik | +"korean"์ "hansik"์ผ๋ก ๋ณ๊ฒฝ |
+
| UPDATE 1 3 group | +(1,3) ์์น์ ์
๊ฐ์ "group"์ผ๋ก ๋ณ๊ฒฝ |
+
์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
+ +
์๋๋ UNMERGE ๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์
์ ๋ณํฉ์ ํด์ ํ๋ ์์์
๋๋ค.
| commands | +ํจ๊ณผ | +
|---|---|
| UNMERGE 1 4 | +์ ๋ณํฉ ํด์ ํ ์๋ ๊ฐ์ (1,4)๊ฐ ๊ฐ์ง | +
์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
+ +
์คํํ ๋ช
๋ น์ด๋ค์ด ๋ด๊ธด 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด commands๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. commands์ ๋ช
๋ น์ด๋ค์ ์์๋๋ก ์คํํ์์ ๋, "PRINT r c" ๋ช
๋ น์ด์ ๋ํ ์คํ๊ฒฐ๊ณผ๋ฅผ ์์๋๋ก 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
commands์ ๊ธธ์ด โค 1,000commands์ ๊ฐ ์์๋ ์๋ 5๊ฐ์ง ํํ ์ค ํ๋์
๋๋ค.
+
+"UPDATE r c value"
+
+r, c๋ ์ ํํ ์
์ ์์น๋ฅผ ๋ํ๋ด๋ฉฐ, 1~50 ์ฌ์ด์ ์ ์์
๋๋ค.value๋ ์
์ ์
๋ ฅํ ๋ด์ฉ์ ๋ํ๋ด๋ฉฐ, ์ํ๋ฒณ ์๋ฌธ์์ ์ซ์๋ก ๊ตฌ์ฑ๋ ๊ธธ์ด 1~10 ์ฌ์ด์ธ ๋ฌธ์์ด์
๋๋ค."UPDATE value1 value2"
+
+value1์ ์ ํํ ์
์ ๊ฐ, value2๋ ์
์ ์
๋ ฅํ ๋ด์ฉ์ ๋ํ๋ด๋ฉฐ, ์ํ๋ฒณ ์๋ฌธ์์ ์ซ์๋ก ๊ตฌ์ฑ๋ ๊ธธ์ด 1~10 ์ฌ์ด์ธ ๋ฌธ์์ด์
๋๋ค."MERGE r1 c1 r2 c2"r1, c1, r2, c2๋ ์ ํํ ์
์ ์์น๋ฅผ ๋ํ๋ด๋ฉฐ, 1~50 ์ฌ์ด์ ์ ์์
๋๋ค."UNMERGE r c"
+
+r, c๋ ์ ํํ ์
์ ์์น๋ฅผ ๋ํ๋ด๋ฉฐ, 1~50 ์ฌ์ด์ ์ ์์
๋๋ค."PRINT r c"r, c๋ ์ ํํ ์
์ ์์น๋ฅผ ๋ํ๋ด๋ฉฐ, 1~50 ์ฌ์ด์ ์ ์์
๋๋ค.commands๋ 1๊ฐ ์ด์์ "PRINT r c" ๋ช
๋ น์ด๋ฅผ ํฌํจํ๊ณ ์์ต๋๋ค.| commands | +result | +
|---|---|
["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
+ +"group"์
๋๋ค. ๋ฐ๋ผ์ ["EMPTY", "group"]์ return ํด์ผ ํฉ๋๋ค.์ ์ถ๋ ฅ ์ #2
+ +UPDATE ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
"MERGE 1 1 1 2" ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
"MERGE 2 2 2 1" ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
"MERGE 2 1 1 1" ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
"UNMERGE 2 2" ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.