알고리즘 풀이/프로그래머스
[프로그래머스/Lv.1] 비밀지도_2018 KAKAO BLIND RECRUITMENT
meeseeks
2023. 5. 8. 11:56
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
def solution(n, arr1, arr2):
# 1. arr1, arr2를 1,0으로 바꿈
for i in range(n):
row1 = bin(arr1[i])[2:]
arr1[i] = row1.zfill(n)
row2 = bin(arr2[i])[2:]
arr2[i] = row2.zfill(n)
# 2. arr = ['', '', '', '', ''] : n개의 빈 문자열
arr = ['' * n for _ in range(n)]
# 3. 두 배열 동시에 탐색하면서 둘 중 하나라도 1이면 arr의 해당 칸 #
for i in range(n):
for j in range(n):
if arr1[i][j] == '1' or arr2[i][j] == '1':
arr[i] += '#'
else:
arr[i] += ' '
return arr
풀이과정
1. 두 배열의 값을 1, 0으로 치환한다.
예를 들어, 첫 번째 값이 9라고 하자.
- 이진수로 변환 후 '0b'제거 : 0b1001 → 1001
- 행의 길이 n만큼 앞에 0 채우기 : 01001
2. n개의 빈 문자열을 가진 arr 배열을 생성한다.
3. arr1과 arr2를 탐색하면서 둘 중 하나라도 값이 1이라면 arr[i]에 '#'을 추가하고, 그렇지 않으면 공백을 추가한다.
반응형