파이썬 알고리즘 245번 | [프로그래머스 비밀지도]

Yunny.Log ·2022년 8월 18일
0

Algorithm

목록 보기
249/318
post-thumbnail

245. 비밀지도

1) 어떤 전략(알고리즘)으로 해결?

  • 문자열 처리

2) 코딩 설명

<내 풀이>


def solution(n, arr1, arr2):
    mapp1 = []
    for ar1 in arr1 : 
        target = list(str(bin(ar1)[2:]))
        while len(target)<n : 
            target.insert(0, "0")
        mapp1.append(target)

    mapp2 = []
    for ar2 in arr2 : 
        target = list(str(bin(ar2)[2:]))
        while len(target)<n : 
            target.insert(0, "0")
        mapp2.append(target)

    # 어느 하나라도 벽인 부분은 전체 지도에서도 벽
    # 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백
    final_map = list([0 for _ in range(n)] for _ in range(n))
    for r in range(n) : 
        for c in range(n) :
            if mapp1[r][c]== '0' and mapp2[r][c] == '0' : 
                final_map[r][c] = " "
            elif mapp1[r][c] == '1' or mapp2[r][c] == '1': 
                final_map[r][c] = "#"
    answer = []

    for f in final_map : 
        answer.append("".join(f))

    return answer

# print(solution(5, [9, 20, 28, 18, 11], [30, 1, 21, 17, 28]))
# print(solution(6, [46, 33, 33 ,22, 31, 50], [27 ,56, 19, 14, 14, 10]))

<반성 점>

  • 첨에 이 부분을 이렇게 써서 계속 틀리고 있었다 허허허

문제 조건

  • 어느 하나라도 벽인 부분은 전체 지도에서도 벽
  • 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백
  • 오답 조건
            if mapp1[r][c]  and mapp2[r][c] == '0' : 
                final_map[r][c] = " "
            elif mapp1[r][c]   or mapp2[r][c] == '1': 
                final_map[r][c] = "#"
  • 수정 후
        for c in range(n) :
            if mapp1[r][c]== '0' and mapp2[r][c] == '0' : 
                final_map[r][c] = " "
            elif mapp1[r][c] == '1' or mapp2[r][c] == '1': 
                final_map[r][c] = "#"

<배운 점>

  • 오랜만에 insert, binary 로 숫자 변환하는 것을 써봐서 감회가 새로웠다.

0개의 댓글