๋ฌธ์ ์ค๋ช
๋น์ ์ ํ ํธ์ง ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ณ ์์ต๋๋ค.
ํ์ ํฌ๊ธฐ๋ 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 ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ commands์ ๊ธธ์ด ≤ 1,000
- commands์ ๊ฐ ์์๋ ์๋ 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 ์ฌ์ด์ ์ ์์ ๋๋ค.
- "UPDATE r c value"
- 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
- ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค. (1,3) ์์น์ ์ ์ ๋น์ด์๊ณ (1,4) ์์น์ ์ ๊ฐ์ "group"์ ๋๋ค. ๋ฐ๋ผ์ ["EMPTY", "group"]์ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ๋ชจ๋ UPDATE ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
- "MERGE 1 1 1 2" ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
- "MERGE 2 2 2 1" ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
- "MERGE 2 1 1 1" ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
- "UNMERGE 2 2" ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋ฉ๋๋ค.
ํ์ด
- ์ฐธ์กฐ์ ์ฐธ์กฐ์ ์ฐธ์กฐ์... ๋ฐฐ์ด์ ๋ฐฐ์ด์ ๋ฐฐ์ด์ ใ
ใ
ใ
- ์๊ฐ๋ง ๋ญ๋นํ ๊ฒ ๊ฐ๋ค.
- ๋ ๋จ์ํ ๋ฐฉ๋ฒ์ ํด๋ณด์
- ์๊ฐ๋ง ๋ญ๋นํ ๊ฒ ๊ฐ๋ค.
- ๋ฌธ์ ๋ฅผ ๋ณด๋ค๋ณด๋๊น merge๊ฐ ๋ณ์ ๊ฐ์ ์กฐ๊ฑด์ด ๋ฌ๋ ค์๋ค...
- ๋ r1 c1 r2 c2 ๋ฒ์ ๋ด ๋ชจ๋ ์
์ ์ฐธ์กฐ๋ฅผ ๋ฐ๊ฟ์ผํ๋ค๊ณ ์๊ฐํ๋๋ฐ,
- ์ง๊ธ ๋ค์ ๋ณด๋๊น ๊ทธ๋ฅ 2์ ์ ์ฐธ์กฐ๋ง ๋ฐ๊ฟ์ฃผ๋ ๊ฒ...
- ๋ r1 c1 r2 c2 ๋ฒ์ ๋ด ๋ชจ๋ ์
์ ์ฐธ์กฐ๋ฅผ ๋ฐ๊ฟ์ผํ๋ค๊ณ ์๊ฐํ๋๋ฐ,
- ๋ฐ์ดํฐ ์ ์ฅ ๋ฉ์ปค๋์ฆ๊ณผ ์ ๊ทผ์ ํ๋ฒ์ ๋๋ผ ์ ์๋๋ก ํด๋ณด์
- ์ ์ฅ๊ณต๊ฐ
- ์ํธ ์ ๋ณด
- sheet(51x51)๋ผ๋ ์ด๋ฆ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ,
- ๊ฐ ์ฐธ์กฐ : test1 = [1,1]
- ํฉ๋ณ์ ์ฐธ์กฐ : test2 = [1,2,3,4]
- sheet(51x51)๋ผ๋ ์ด๋ฆ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ,
- ๊ฐ ์ ๋ณด
- values = {}๋ก ๋ง๋ค๊ณ , ๋ค์๊ณผ ๊ฐ์ด ์ ์ฅ
- ๊ฐ์ : values[(1,1)] = "babo"
- ํฉ๋ณ์ : values[(1,2,3,4)] = "merged"
- values = {}๋ก ๋ง๋ค๊ณ , ๋ค์๊ณผ ๊ฐ์ด ์ ์ฅ
- ์ํธ ์ ๋ณด
- ๊ตฌํ
- ๋ช ๋ น์ ์ปค๋งจ๋ ๋ณ๋ก ๋ถ๋ฆฌํ๋ ํจ์๋ฅผ ํ๋ ๋ง๋ค๊ณ ,
- ๊ฐ ํจ์์์ ๊ฐ๋ณ ์ปค๋งจ๋๋ก ๋ถ๊ธฐ
- sheet์ value์์ ๊ฐ์ ๊บผ๋ผ ๋๋ ๋ฐ์ดํฐ์ ๊ธธ์ด๋ก ์ด๋ค ์ข
๋ฅ์ธ์ง ํ๋ณํ๋ค.
- ๊ฐ ์ : len(test1)
- ํฉ๋ณ ์ : len(test2)
- ๋ช
๋ น์ด๋ณ ๊ตฌํ
- UPDATE r c value
- ํด๋น ์ ์ ์ฐธ์กฐ๊ฐ ์์ผ๋ฉด values์์ ๊ฐ์ ๋ณ๊ฒฝํจ
- ํด๋น ์ ์ ์ฐธ์กฐ๊ฐ ์์ผ๋ฉด ์ฐธ์กฐ๋ฅผ ๋ง๋ค๊ณ , values์ ๊ฐ์ ์ถ๊ฐํจ
- UPDATE value1 value2
- values ํ ์ด๋ธ ์ ์ ๊ฒ์ฌํด์ value1์ด ์์ผ๋ฉด value2๋ก ๋ณ๊ฒฝ
- ๋ชจ๋ ์
์ ๊ฐ์ด ๋ฐ๋๋ ๊ฒ์ด๋ฏ๋ก ๋๊น์ง for๋ฌธ ๋๋ฆฌ๋ฉด ๋จ
- for k,v in list(values.items())๋ก
- MERGE r1 c1 r2 c2
- sheet์ ๋ ์ (r1, c1), (r2, c2)์ ์ฐธ์กฐ๋ฅผ ๋์ผํ ๊ฑธ๋ก ๋ณ๊ฒฝ
- r1 c1 = r2 c2 ๋ฉด ์คํต
- ํด๋น ๋ฒ์ ๋ด์ ๊ฐ์ด ์๋ ์ ์ด ์๋์ง ์ฒดํฌํด์ ๊ฐ์ r1 c1๋ก. ๋์ ๋ชจ๋ ๊ฐ์ด ์์ผ๋ฉด r1 c1 ๊ธฐ์ค
- UNMERGE r c
- ํด๋น ์์น์ ์๋ ์ ์ด ๋ณํฉ ์ ์ด๋ฉด sheet for๋ฌธ ๋๋ ค์ ์ฐธ์กฐํด์ ํ๊ณ ,
- values[r c]์ value[r1 c1 r2 c2] ๊ฐ์ ๋ฃ๊ธฐ
- ์ด๋ผ? ๋๋ค!?
- UPDATE r c value
- ์ ์ฅ๊ณต๊ฐ
- ์ด์ ์ ์๋ ๊ฐ๋ค ์ง์ฐ์ง ์์๋ ๋๋ ๋ฏ? ใ ใ ๊ฐ์ฆ์!
def solution(commands):
answer = []
sheet = [['']*51 for i in range(51)]
values = {'':"EMPTY"}
for cmd in commands:
cmd = cmd.split(sep=' ')
if cmd[0] == "UPDATE":
if len(cmd) == 3: # ๋ฆฌ๋ค์
source = cmd[1]
target = cmd[2]
for k,v in list(values.items()):
if v == source:
values[k] = target
else: # ์
๋ฐ์ดํธ
r = int(cmd[1])
c = int(cmd[2])
v = cmd[3]
source = sheet[r][c]
if source == '': # ๋น์
sheet[r][c] = (r,c)
values[(r,c)] = v
else:
values[source] = v
elif cmd[0] == "PRINT": # print("ํ๋ฆฐํธ")
r = int(cmd[1])
c = int(cmd[2])
source = sheet[r][c]
answer.append(values[source])
elif cmd[0] == "MERGE":
r1 = int(cmd[1])
c1 = int(cmd[2])
r2 = int(cmd[3])
c2 = int(cmd[4])
source1 = sheet[r1][c1]
source2 = sheet[r2][c2]
if source1 == '' and source2 == '': # ๋น์
, ๋น์
sheet[r1][c1] = (r1,c1)
sheet[r2][c2] = (r2,c2)
elif source1 == '': # ๋น์
vs ๊ฐ์
sheet[r1][c1] = sheet[r2][c2]
elif source2 == '': # ๊ฐ์
vs ๋น์
sheet[r2][c2] = sheet[r1][c1]
else: # ๊ฐ์
/๋ณํฉ์
vs ๊ฐ์
/๋ณํฉ์
for i in range(51):
for j in range(51):
if sheet[i][j] == source2:
sheet[i][j] = source1
elif cmd[0] == "UNMERGE": # print("์ธ๋จธ์ง")
r = int(cmd[1])
c = int(cmd[2])
source = sheet[r][c]
v = values[source]
for i in range(51):
for j in range(51):
if sheet[i][j] == source:
sheet[i][j] = ''
sheet[r][c] = (r,c)
values[(r,c)] = v
return answer
- ์? ์ ๋ฐํ์ ์๋ฌ...
- ๋จธ์ง๋ ์ธ๋จธ์ง, ๊ฐ ๋ฃ๊ธฐ. ๋ค ํ์ธํ๋๋ฐ... ํ ์ ์๋ผ
- ํ ์คํธ์ผ์ด์ค 6๋ฒ 11๋ฒ์ด ์คํจํ๋ค.
- ๊ทธ๋ฅ ์ฒจ๋ถํฐ ๊ฐ์ ๋ค ๋ฃ์ด ๋๊ณ ์์ํด๋ ๋๋๊ตฌ๋... ใ ก.ใ ก;
def solution(commands):
answer = []
sheet = [[(i,j) for j in range(51)] for i in range(51)]
values = {(i,j):'' for j in range(51) for i in range(51)}
for cmd in commands:
cmd = cmd.split(sep=' ')
if cmd[0] == "UPDATE" and len(cmd) == 3: # ๋ฆฌ๋ค์
source = cmd[1]
target = cmd[2]
for k,v in values.items():
if v == source:
values[k] = target
if cmd[0] == "UPDATE" and len(cmd) == 4: # ์
๋ฐ์ดํธ
r = int(cmd[1])
c = int(cmd[2])
v = cmd[3]
source = sheet[r][c]
values[source] = v
elif cmd[0] == "PRINT": # print("ํ๋ฆฐํธ")
r = int(cmd[1])
c = int(cmd[2])
source = sheet[r][c]
if values[source] != '':
answer.append(values[source])
else:
answer.append("EMPTY")
elif cmd[0] == "MERGE":
r1 = int(cmd[1])
c1 = int(cmd[2])
r2 = int(cmd[3])
c2 = int(cmd[4])
source1 = sheet[r1][c1]
source2 = sheet[r2][c2]
if source1 == source2:
continue
if values[source1] != '': # ๋น์
vs ๊ฐ์
v_source1 = values[source1]
for i in range(51):
for j in range(51):
if sheet[i][j] == source2:
sheet[i][j] = source1
else:
v_source2 = values[source2]
for i in range(51):
for j in range(51):
if sheet[i][j] == source1:
sheet[i][j] = source2
elif cmd[0] == "UNMERGE": # print("์ธ๋จธ์ง")
r = int(cmd[1])
c = int(cmd[2])
source = sheet[r][c]
v = values[source]
for i in range(51):
for j in range(51):
if sheet[i][j] == source:
sheet[i][j] = (i,j)
values[(i,j)] = ''
values[(r,c)] = v
return answer
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (1.54ms, 10.7MB)
ํ
์คํธ 2 ใ ํต๊ณผ (1.42ms, 10.7MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.76ms, 10.7MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.74ms, 10.6MB)
ํ
์คํธ 5 ใ ํต๊ณผ (1.16ms, 10.7MB)
ํ
์คํธ 6 ใ ํต๊ณผ (1.75ms, 10.8MB)
ํ
์คํธ 7 ใ ํต๊ณผ (1.29ms, 10.8MB)
ํ
์คํธ 8 ใ ํต๊ณผ (1.55ms, 10.6MB)
ํ
์คํธ 9 ใ ํต๊ณผ (3.45ms, 10.8MB)
ํ
์คํธ 10 ใ ํต๊ณผ (4.13ms, 10.6MB)
ํ
์คํธ 11 ใ ํต๊ณผ (6.84ms, 10.6MB)
ํ
์คํธ 12 ใ ํต๊ณผ (15.11ms, 10.9MB)
ํ
์คํธ 13 ใ ํต๊ณผ (46.35ms, 10.8MB)
ํ
์คํธ 14 ใ ํต๊ณผ (43.27ms, 10.9MB)
ํ
์คํธ 15 ใ ํต๊ณผ (75.67ms, 10.8MB)
ํ
์คํธ 16 ใ ํต๊ณผ (64.56ms, 10.9MB)
ํ
์คํธ 17 ใ ํต๊ณผ (73.67ms, 10.9MB)
ํ
์คํธ 18 ใ ํต๊ณผ (67.36ms, 10.8MB)
ํ
์คํธ 19 ใ ํต๊ณผ (70.56ms, 10.9MB)
ํ
์คํธ 20 ใ ํต๊ณผ (153.35ms, 10.8MB)
ํ
์คํธ 21 ใ ํต๊ณผ (174.97ms, 11MB)
ํ
์คํธ 22 ใ ํต๊ณผ (80.95ms, 11MB)
- ๊ณ ์์ ํ์ด๋ฅผ ๋ณด๋ฉด
- ํํ์ด ์๋ ๊ฐ์ผ๋ก ํ๋ ๋ฐฉ์๋ ์๊ณ
def solution(commands):
answer = []
sheet = [[51 * i + j for j in range(51)] for i in range(51)]
values = {i : '' for i in range(51*51)}
for cmd in commands:
cmd = list(cmd.split(sep=' '))
if cmd[0] == "UPDATE" and len(cmd) == 3: # ๋ฆฌ๋ค์
source = cmd[1]
target = cmd[2]
for k,v in values.items():
if v == source:
values[k] = target
elif cmd[0] == "UPDATE" and len(cmd) == 4: # ์
๋ฐ์ดํธ
r = int(cmd[1])
c = int(cmd[2])
v = cmd[3]
source = sheet[r][c]
values[source] = v
elif cmd[0] == "PRINT": # print("ํ๋ฆฐํธ")
r = int(cmd[1])
c = int(cmd[2])
source = sheet[r][c]
if values[source] != '':
answer.append(values[source])
else:
answer.append("EMPTY")
elif cmd[0] == "MERGE":
r1 = int(cmd[1])
c1 = int(cmd[2])
r2 = int(cmd[3])
c2 = int(cmd[4])
source1 = sheet[r1][c1]
source2 = sheet[r2][c2]
if source1 == source2:
continue
if values[source1] != '':
for i in range(51):
for j in range(51):
if sheet[i][j] == source2:
sheet[i][j] = source1
else:
for i in range(51):
for j in range(51):
if sheet[i][j] == source1:
sheet[i][j] = source2
elif cmd[0] == "UNMERGE": # print("์ธ๋จธ์ง")
r = int(cmd[1])
c = int(cmd[2])
source = sheet[r][c]
v = values[source]
for i in range(51):
for j in range(51):
if sheet[i][j] == source:
sheet[i][j] = 51 * i + j
values[sheet[i][j]] = ''
values[sheet[r][c]] = v
# print(cmd)
# for i in range(11):
# for j in range(11):
# print(sheet[i][j],end="|")
# print("")
# print("="*10)
# print(values)
# print("="*10)
return answer
- ๊ทธ๋ฅ 2์ฐจ์ ๋ฐฐ์ด์ ๋ด์ฉ๊ณผ ์ฐธ์กฐ๋ฅผ ๊ฐ์ด ๋ฃ๋ ๋ฐฉ์๋ ๋๋๊ตฌ๋.
def solution(commands):
answer = []
board = [[["",[(y,x)]] for x in range(51)] for y in range(51)]
for c in commands:
li = c.split()
if li[0] == "UPDATE":
if len(li) == 4:
for r,c in board[int(li[1])][int(li[2])][1]:
board[r][c][0] = li[3]
else:
for y in range(1,51):
for x in range(1,51):
if board[y][x][0] == li[1]:
board[y][x][0] = li[2]
if li[0] == "MERGE":
r1,c1 = int(li[1]),int(li[2])
r2,c2 = int(li[3]),int(li[4])
temp_li = list(set(board[r1][c1][1]+board[r2][c2][1]))
for r,c in board[r1][c1][1]:
board[r][c][1] = temp_li
for r,c in board[r1][c1][1]:
board[r][c][1]= temp_li
if board[r1][c1][0] != "":
for r,c in board[r1][c1][1]:
board[r][c][0] = board[r1][c1][0]
elif board[r2][c2][0] != "":
for r,c in board[r2][c2][1]:
board[r][c][0] = board[r2][c2][0]
if li[0] == "UNMERGE":
for r,c in board[int(li[1])][int(li[2])][1]:
if r == int(li[1]) and c == int(li[2]):
pass
else:
board[r][c][1] = [(r,c)]
board[r][c][0] = ""
board[int(li[1])][int(li[2])][1] = [(int(li[1]),int(li[2]))]
if li[0] == "PRINT":
r1,c1 = int(li[1]),int(li[2])
if board[r1][c1][0] != "":
answer.append(board[r1][c1][0])
else:
answer.append("EMPTY")
return answer
- ๊ทผ๋ฐ ๋ฑํ ์๋ฃํ์ด๋ ์๊ณ ๋ฆฌ์ฆ ๋ณด๋ค๋ ๊ทธ๋ฅ ๊ตฌํ ๋ฌธ์ ๊ฐ๋ค.
- ๊ฒ์ํด๋ณด๋๊น ์ ๋์จํ์ธ๋ ๋ฌธ์ ๋ผ๊ณ ๋์ค๋๋ฐ...
- (์ฌ์ค์ ๋ญ์ง ๋ชฐ๋ผ... ์๊ณค์๊ณค)
- ๋์ค์ ๊ณต๋ถํด๋ณด์...
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค ๊ณต๋ถ ํ๊ธฐ (0) | 2023.03.28 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ์ฐ์ต๋ฌธ์ ๋น๊ตฌ ์ฐ์ต (0) | 2023.03.21 |
[PCCP ๋ชจ์๊ณ ์ฌ#2] ๋ณด๋ฌผ ์ง๋ (๊ธธ์ฐพ๊ธฐ) - ๋ฏธ์๋ฃ (0) | 2023.03.12 |
[PCCP ๋ชจ์๊ณ ์ฌ#2] ์นดํ ํ์ฅ (ํ) (0) | 2023.03.11 |
[PCCP ๋ชจ์๊ณ ์ฌ#2] ์ ์ ์ฌ์ ๊ต์ก (์ฐ์ ์์ํ) (0) | 2023.03.10 |