๊ฐœ๋ฐœ์ž HOON
๐Ÿ› HOON DEVLog
๊ฐœ๋ฐœ์ž HOON
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ˜Ž ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ (137)
    • ๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„ (7)
    • ๐Ÿฆ” ์ทจ์—…์ค€๋น„ ๊ธฐ๋ก (7)
    • โ˜• ์ž๋ฐ” : JAVA (5)
    • ๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS (80)
    • ๐ŸŒฑ ๋ฐฑ์—”๋“œ : Backend (13)
    • ๐Ÿงช ์ปดํ“จํ„ฐ๊ณผํ•™ : CS (11)
    • ๐Ÿ—‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : DB (1)
    • ๐Ÿƒ‍โ™‚๏ธ DEVLOG (8)
    • โš™๏ธ Trouble Shooting (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • GitHub
  • Resume

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๊ฐœ๋ฐœ์ž HOON

๐Ÿ› HOON DEVLog

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [1์ฐจ] ํ”„๋ Œ์ฆˆ4๋ธ”๋ก (level2, python)
๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [1์ฐจ] ํ”„๋ Œ์ฆˆ4๋ธ”๋ก (level2, python)

2022. 9. 13. 13:59

๋ฌธ์ œ ์„ค๋ช…

 

๋ธ”๋ผ์ธ๋“œ ๊ณต์ฑ„๋ฅผ ํ†ต๊ณผํ•œ ์‹ ์ž… ์‚ฌ์› ๋ผ์ด์–ธ์€ ์‹ ๊ทœ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์—…๋ฌด๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฒˆ์— ์ถœ์‹œํ•  ๊ฒŒ์ž„ ์ œ๋ชฉ์€ "ํ”„๋ Œ์ฆˆ4๋ธ”๋ก".
๊ฐ™์€ ๋ชจ์–‘์˜ ์นด์นด์˜คํ”„๋ Œ์ฆˆ ๋ธ”๋ก์ด 2×2 ํ˜•ํƒœ๋กœ 4๊ฐœ๊ฐ€ ๋ถ™์–ด์žˆ์„ ๊ฒฝ์šฐ ์‚ฌ๋ผ์ง€๋ฉด์„œ ์ ์ˆ˜๋ฅผ ์–ป๋Š” ๊ฒŒ์ž„์ด๋‹ค.

 


๋งŒ์•ฝ ํŒ์ด ์œ„์™€ ๊ฐ™์ด ์ฃผ์–ด์งˆ ๊ฒฝ์šฐ, ๋ผ์ด์–ธ์ด 2×2๋กœ ๋ฐฐ์น˜๋œ 7๊ฐœ ๋ธ”๋ก๊ณผ ์ฝ˜์ด 2×2๋กœ ๋ฐฐ์น˜๋œ 4๊ฐœ ๋ธ”๋ก์ด ์ง€์›Œ์ง„๋‹ค. ๊ฐ™์€ ๋ธ”๋ก์€ ์—ฌ๋Ÿฌ 2×2์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ง€์›Œ์ง€๋Š” ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” 2×2 ๋ชจ์–‘์ด ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋‹ค๋ฉด ํ•œ๊บผ๋ฒˆ์— ์ง€์›Œ์ง„๋‹ค.

 

๋ธ”๋ก์ด ์ง€์›Œ์ง„ ํ›„์— ์œ„์— ์žˆ๋Š” ๋ธ”๋ก์ด ์•„๋ž˜๋กœ ๋–จ์–ด์ ธ ๋นˆ ๊ณต๊ฐ„์„ ์ฑ„์šฐ๊ฒŒ ๋œ๋‹ค.

 

๋งŒ์•ฝ ๋นˆ ๊ณต๊ฐ„์„ ์ฑ„์šด ํ›„์— ๋‹ค์‹œ 2×2 ํ˜•ํƒœ๋กœ ๊ฐ™์€ ๋ชจ์–‘์˜ ๋ธ”๋ก์ด ๋ชจ์ด๋ฉด ๋‹ค์‹œ ์ง€์›Œ์ง€๊ณ  ๋–จ์–ด์ง€๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค.

 

์œ„ ์ดˆ๊ธฐ ๋ฐฐ์น˜๋ฅผ ๋ฌธ์ž๋กœ ํ‘œ์‹œํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

TTTANT
RRFACC
RRRFCC
TRRRAA
TTMMMF
TMMTTJ

๊ฐ ๋ฌธ์ž๋Š” ๋ผ์ด์–ธ(R), ๋ฌด์ง€(M), ์–ดํ”ผ์น˜(A), ํ”„๋กœ๋„(F), ๋„ค์˜ค(N), ํŠœ๋ธŒ(T), ์ œ์ด์ง€(J), ์ฝ˜(C)์„ ์˜๋ฏธํ•œ๋‹ค

์ž…๋ ฅ์œผ๋กœ ๋ธ”๋ก์˜ ์ฒซ ๋ฐฐ์น˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ง€์›Œ์ง€๋Š” ๋ธ”๋ก์€ ๋ชจ๋‘ ๋ช‡ ๊ฐœ์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ œ์ž‘ํ•˜๋ผ.


์ž…๋ ฅ ํ˜•์‹

 

  • ์ž…๋ ฅ์œผ๋กœ ํŒ์˜ ๋†’์ด m, ํญ n๊ณผ ํŒ์˜ ๋ฐฐ์น˜ ์ •๋ณด board๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.
  • 2 โ‰ฆ n, m โ‰ฆ 30
  • board๋Š” ๊ธธ์ด n์ธ ๋ฌธ์ž์—ด m๊ฐœ์˜ ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋ธ”๋ก์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž๋Š” ๋Œ€๋ฌธ์ž A์—์„œ Z๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค.

์ถœ๋ ฅ ํ˜•์‹

 

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ํŒ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ๋ช‡ ๊ฐœ์˜ ๋ธ”๋ก์ด ์ง€์›Œ์งˆ์ง€ ์ถœ๋ ฅํ•˜๋ผ.


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



์˜ˆ์ œ์— ๋Œ€ํ•œ ์„ค๋ช…

 

  • ์ž…์ถœ๋ ฅ ์˜ˆ์ œ 1์˜ ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ์—๋Š” A ๋ธ”๋ก 6๊ฐœ๊ฐ€ ์ง€์›Œ์ง€๊ณ , ๋‘ ๋ฒˆ์งธ์—๋Š” B ๋ธ”๋ก 4๊ฐœ์™€ C ๋ธ”๋ก 4๊ฐœ๊ฐ€ ์ง€์›Œ์ ธ, ๋ชจ๋‘ 14๊ฐœ์˜ ๋ธ”๋ก์ด ์ง€์›Œ์ง„๋‹ค.
  • ์ž…์ถœ๋ ฅ ์˜ˆ์ œ 2๋Š” ๋ณธ๋ฌธ ์„ค๋ช…์— ์žˆ๋Š” ๊ทธ๋ฆผ์„ ์˜ฎ๊ธด ๊ฒƒ์ด๋‹ค. 11๊ฐœ์™€ 4๊ฐœ์˜ ๋ธ”๋ก์ด ์ฐจ๋ก€๋กœ ์ง€์›Œ์ง€๋ฉฐ, ๋ชจ๋‘ 15๊ฐœ์˜ ๋ธ”๋ก์ด ์ง€์›Œ์ง„๋‹ค.

ํ’€์ด ์ฝ”๋“œ

def check(m, n, board):
    filter = [[0 for _ in range(n)] for _ in range(m)]
    count = 0
    
    # check can delete
    for i in range(m-1):
        for j in range(n-1):
            a = board[i][j]
            b = board[i][j+1]
            c = board[i+1][j]
            d = board[i+1][j+1]
            if a == b == c == d and a != '0':
                filter[i][j], filter[i][j+1], filter[i+1][j], filter[i+1][j+1] = 1, 1, 1, 1
    
    for i in range(m):
        for j in range(n):
            if filter[i][j] == 1:
                count += 1
                board[i][j] = '0'
    
    if count == 0:
        return 0
    
    # fill blank
    for i in range(m-2, -1, -1):
        for j in range(n):
            k = i
            while 0 <= k+1 < m and board[k+1][j] == '0':
                k += 1
            if k != i:
                board[k][j] = board[i][j]
                board[i][j] = '0'
                
    return count

def solution(m, n, board):
    answer = 0
    board = list(map(list, board))
    
    while True:
        temp = check(m, n, board)
        if temp == 0:
            break
        answer += temp
        
    return answer

๊ตฌํ˜„ ๋ฌธ์ œ์ด๋‹ค.

 

์ฒ˜์Œ ๊ตฌํ˜„ ๋ฌธ์ œ๋ฅผ ์ ‘ํ•œ ์‚ฌ๋žŒ๋“ค์€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์ง€๋งŒ, 2048 ๋ฌธ์ œ๋ฅผ ํ•œ ๋ฒˆ์ด๋ผ๋„ ํ’€์–ด๋ณธ ์ ์ด ์žˆ๊ฑฐ๋‚˜, ๋ฐฑ์ค€ ๊ณจ๋“œ๊ธ‰ ๊ตฌํ˜„ ๋ฌธ์ œ๋‚˜ ์‚ผ์„ฑ ๊ธฐ์ถœ์„ ๋งŽ์ด ํ’€์–ด๋ณธ ์‚ฌ๋žŒ๋“ค์€ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

์ฝ”๋“œ๋ฅผ ํ’€์–ด์„œ ๋ณด์ž.

board = list(map(list, board))

์šฐ์„ , ๋ณด๋“œ ๋ฆฌ์ŠคํŠธ ๋‚ด์— ๋ฌธ์ž์—ด๋กœ ์ €์žฅ์ด ๋˜์–ด์žˆ๋Š”๋ฐ, ๋ฌธ์ž์—ด ๋‚ด๋ถ€์˜ ์›์†Œ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ผ์ด ์žˆ๋‹ค.

๋ธ”๋ก์ด ํ„ฐ์ง„ ํ›„, ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ฌธ์ž์—ด ์ƒํƒœ๋กœ ์กด์žฌํ•˜๋ฉด ์ธ๋ฑ์Šค๋กœ ์ ‘๊ทผํ•ด ๊ฐ’์„ ์ˆ˜์ •ํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋–„๋ฌธ์—,

board๋ฅผ 2์ค‘ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

 

check ํ•จ์ˆ˜๊ฐ€ ํ•˜๋Š” ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1) ๋‚ด๋ถ€์— 2x2 ๋ธ”๋ก์ด ํ„ฐ์งˆ ๊ฒƒ์ด ์žˆ๋Š”์ง€ ํ™•์ธ

2) ํ„ฐ์งˆ ์ˆ˜ ์žˆ๋Š” ๋ธ”๋ก board์— ์ ์šฉํ•˜๊ณ , ํ„ฐ์ง„ ๋ธ”๋ก์˜ ๊ฐฏ์ˆ˜ ์„ธ๊ธฐ

3) ํ„ฐ์ง€๊ณ  ๋‚จ์€ ๋นˆ ๊ณต๊ฐ„์— ๋Œ€ํ•ด ๊ณต๋ฐฑ์„ ๋ฉ”๊พธ๋Š” ์ž‘์—… ํ›„ board์— ๊ฐฑ์‹ 

4) ํ„ฐ์ง„ ๋ธ”๋ก์˜ ๊ฐฏ์ˆ˜ ๋ฆฌํ„ด

 

ํ„ฐ์งˆ ์ˆ˜ ์žˆ๋Š” ๋ธ”๋ก์€ ์„œ๋กœ ๊ฒน์น  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.

2x2์”ฉ ๊ณ„์† ๋Œ๋ฉด์„œ ๊ทธ๋•Œ ๊ทธ๋•Œ ํ„ฐ๋œจ๋ฆฌ๊ฒŒ ๋˜๋ฉด, ํ„ฐ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฒน์นœ ๋ธ”๋ก์€ ํ„ฐ์ง€์ง€ ์•Š๊ฒŒ ๋ฐ˜์˜๋  ์ˆ˜ ์žˆ๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋” ๋‚˜์˜ค๋”๋ผ๋„, ํ„ฐ๋œจ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ธ”๋ก์— ๋Œ€ํ•ด์„œ filter ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๋งˆํ‚น์„ ํ•ด๋†“๊ณ ,

ํ•œ ๋ฒˆ์— ํ„ฐ๋œจ๋ฆฐ๋‹ค.

 

์ด๋•Œ ํ„ฐ๋œจ๋ฆฐ ๋ธ”๋ก์˜ ๊ฐฏ์ˆ˜๋ฅผ ์„ธ์–ด๋†“๋Š”๋‹ค.

 

๋ธ”๋ก์„ ์ œ์ผ ์•„๋ž˜๋กœ ๋‚ด๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์€,

์ œ์ผ ์•„๋ž˜์—์„œ ๋‘ ๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ ์ฒดํฌํ•œ๋‹ค.

์ œ์ผ ์•„๋ž˜๋Š” ๋‚ด๋ ค๊ฐˆ ๊ณต๊ฐ„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ž์‹ ์˜ ๋ธ”๋ก ๋ฐ‘์— '0'์œผ๋กœ ์ฑ„์›Œ์ ธ์žˆ๊ณ , '0'์ด ์•„๋‹Œ ๊ฒƒ์ด ๋‚˜์˜ค๊ฑฐ๋‚˜ ๋ฐ”๋‹ฅ์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ k ๊ฐ’์„ ์˜ฌ๋ ค์ค€๋‹ค.

๊ทธ ํ›„, ๋ฐ‘์— ๋‚ด๋ ค๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ๊ฐ’์„ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค.

 

๊ทธ ํ›„ ์ œ์ผ ์•„๋ž˜์—์„œ ์„ธ๋ฒˆ์งธ ํ–‰, ๋„ค ๋ฒˆ์งธ ํ–‰ ์ˆœ์œผ๋กœ ๋ชจ๋‘ ๊ฐฑ์‹ ํ•ด์ฃผ๋ฉด ํ’€์ดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด

'๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [3์ฐจ] n์ง„์ˆ˜ ๊ฒŒ์ž„ (level2, python)  (0) 2022.09.13
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋“ฑ๊ตฃ๊ธธ (level3, python)  (0) 2022.09.13
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”ผ๋กœ๋„ (level2, python)  (0) 2022.09.13
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‹จ์–ด ๋ณ€ํ™˜ (level3, python)  (0) 2022.09.13
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฃผ์‹๊ฐ€๊ฒฉ (level2, python)  (1) 2022.09.13
    '๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [3์ฐจ] n์ง„์ˆ˜ ๊ฒŒ์ž„ (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋“ฑ๊ตฃ๊ธธ (level3, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํ”ผ๋กœ๋„ (level2, python)
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‹จ์–ด ๋ณ€ํ™˜ (level3, python)
    ๊ฐœ๋ฐœ์ž HOON
    ๊ฐœ๋ฐœ์ž HOON
    ์ข‹์€ ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ก์„ ๋ชจ์•˜์Šต๋‹ˆ๋‹ค. # ์ฃผ๋‹ˆ์–ด # ๋ฐฑ์—”๋“œ # ๊ฐœ๋ฐœ์ž

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”