이숭간 공부기록
[프로그래머스] 파이썬 _ 비밀지도 (2018 KAKAO) ⭕️ 본문
728x90
https://programmers.co.kr/learn/courses/30/lessons/17681
문제유형 : 구현
문제풀이
딱히 어렵진 않았던 문제지만 신박한 파이썬 내장함수를 배우게되어 정리한다.
- 10진수 2진수 변환 : bin()
- 나는 이걸 몰랐어서 그냥 재귀로 10진수에서 2진수로 변환하는 tobinary()함수를 만들어서 썼다.
-
>>> bin(10) '0b1010' // 앞에붙은 0b를 없애려면 슬라이스기능을 이용해서 [2:] 요로코롬
-
- 오른쪽 정렬후 원하는문자로 메우기 : rjust()
-
val = "77".rjust(5, "0") >> 77000 자매품 (왼쪽정렬) val = "77".ljust(5, "0") >> 00077
-
- 그리고 이문제는 0,1로 이루어진 문자열을 활용해서 비트연산자(논리합)을 하면 쉽게 풀수 있었다.
- 비트 논리합은 같은 자리에 하나라도 1이면 해당 자리의 연산 결과가 1이며 둘 다 0일 때만 0이다. 예를 들어 a가 6이고 b가 3일 때 a|b는 7입니다.(110 | 011 => 111)
정답코드:
global target
def solution(n, arr1, arr2):
arr1_list = []
arr2_list = []
answer = []
global target
target = n
for i in range(n):
arr1_list.append(tobinary([], arr1[i]))
arr2_list.append(tobinary([], arr2[i]))
print(arr1_list)
for i in range(n):
string = ''
for j in range(n):
# 둘다 0일때만 공백이고 나머지는 벽
if arr1_list[i][j] == 0 and arr2_list[i][j] == 0:
string += ' '
else:
string += '#'
answer.append(string)
return answer
# number to binary
def tobinary(binary, number):
if (number <= 1):
binary.append(number)
while(len(binary)<target):
binary.append(0)
return binary[::-1]
binary.append(number % 2)
return tobinary(binary, number // 2)
정답코드2 (210706):
def solution(n, arr1, arr2):
result = []
for i in list(zip(arr1, arr2)):
a = bin(i[0])[2:].rjust(n,"0")
b = bin(i[1])[2:].rjust(n,"0")
temp = ''
for i in list(zip(a,b)):
temp += str(int(i[0])|int(i[1]))
result.append(temp)
answer = []
for i in result:
i = i.replace("1", "#")
i = i.replace("0", " ")
answer.append(i)
return answer
다른분 풀이
역시 파이썬은 내장함수와 라이브러리를 잘 활용할줄 알면 개꿀인듯하다
def solution(n, arr1, arr2):
answer = []
for i,j in zip(arr1,arr2):
a12 = str(bin(i|j)[2:])
a12=a12.rjust(n,'0')
a12=a12.replace('1','#')
a12=a12.replace('0',' ')
answer.append(a12)
return answer
추가 : 파이썬 진수다루기
https://www.daleseo.com/python-int-bases/
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 파이썬 _ 여행경로 (0) | 2021.06.03 |
---|---|
[프로그래머스] 파이썬 _ 단어변환 ⭕️ (0) | 2021.05.29 |
[프로그래머스] 파이썬 _ 네트워크 ⭕️ (0) | 2021.05.29 |
[프로그래머스] 타겟넘버 ⭕️ (0) | 2021.05.26 |
[프로그래머스] 2019 KAKAO _ 오픈채팅방 ⭕️ (0) | 2021.05.26 |