What I Learned/Algorithm Practice
[programmers - python] Lv.1: 비밀지도 (2018 KAKAO BLIND RECRUITMEN, [1차])
Interrobang
2022. 12. 22. 17:02
문제 링크
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
def solution(n, arr1, arr2):
for i in range(n):
arr1[i] = toBinary(arr1[i], n)
arr2[i] = toBinary(arr2[i], n)
answer = []
for i in range(n):
row = ""
for j in range(n):
if arr1[i][j] == 0 and arr2[i][j] == 0:
row += " "
else:
row += "#"
answer.append(row)
return answer
def toBinary(num, n):
binary = []
digit = [2**(n-i-1) for i in range(n)]
for i in digit:
binary.append(num // i)
num %= i
return binary
*key point: 십진수를 리스트 형태의 이진수로 변환하는 함수를 정의한다. 이를 활용하여 주어진 두 배열을 2차원 배열로 변환하고 반복문과 조건문을 이용하여 주어진 조건에 맞는 결과를 새로운 리스트로 출력한다.
*comment: 다음 함수를 활용하면 더 간단한 풀이가 가능하다.
- bin() 함수: 정수형 자료를 이진수로 변환하여 문자열로 나타내주는 함수. 단순 변환 뿐 아니라 &, |, ~, ^, <<, >> 등을 이용한 다양한 연산을 동시에 가능하게 한다.
- rjust(), center(), ljust() 함수: 오른쪽, 중앙, 혹은 왼쪽으로 문자열을 정렬하여 특정 길이의 문자열로 출력하는 함수. 이때 빈 곳을 원하는 문자로 채울 수 있다.
*Hansol Eom, 열혈코딩님의 풀이
def solution(n, arr1, arr2):
answer = []
for i in range(n):
a = str(bin(arr1[i]|arr2[i])[2:]).rjust(n,'0').replace('1','#').replace('0',' ')
answer.append(a)
return answer