코딩 테스트/문제 풀기

[프로그래머스] 프렌즈4블록

hazel_ 2021. 3. 30. 14:08

programmers.co.kr/learn/courses/30/lessons/17679

 

코딩테스트 연습 - [1차] 프렌즈4블록

프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙

programmers.co.kr

 

def pop_num(b, m, n):
    pop_set = set()
    for i in range(1, n):
        for j in range(1, m):
            if b[i][j] == b[i - 1][j - 1] == b[i - 1][j] == b[i][j - 1] != "_":
                pop_set |= set([(i, j), (i - 1, j - 1), (i - 1, j), (i, j - 1)])
    for i, j in pop_set:
        b[i][j] = 0
    for i, row in enumerate(b):
        empty = ["_"] * row.count(0)
        b[i] = empty + [block for block in row if block != 0]
    return len(pop_set)

def solution(m, n, board):
    count=0
    b=list(map(list, zip(*board)))

    while True:
        pop=pop_num(b,m,n)
        if pop==0: return count
        count+=pop

 

궁금한 것)

solution에서 b 리스트를 정의하여 Argument로 pop_num에 전달하였을때,

pop_num 함수에서 그 Argument를 수정하면 solution에서 보았을 때 b는 수정되어있다.

왜일까

h-sseung.tistory.com/118?category=956069

 

함수의 인자 전달

1. 단순 원시값인 경우 (int, char 등) def test(a): a=20 print("test함수 내 a의 id = ",id(a)) print("test함수 내 a의 값 = ",a) print() a=50 print("a에 50을 줬을때 a의 id = ",id(a)) print("a에 50을 줬..

h-sseung.tistory.com

이 게시물 확인!