https://programmers.co.kr/learn/courses/30/lessons/17681
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
- 파이썬에서는 간단히 2진수로 나타낼 수 있었기 때문에 빨리 풀 수 있었다.
더보기
def calc(answer, n, arr):
for i, item in enumerate(arr) :
binList = list(str(bin(item).replace('0b', '')))
convertedList = [0 for idx in range(n)]
convertedIdx = n - 1
for idx in range(int(binList.__len__()) - 1, -1, -1):
convertedList[convertedIdx] = binList[idx]
convertedIdx -= 1
for j, element in enumerate(convertedList):
if('1' == element):
answer[i][j] = '#'
return answer
def solution(n, arr1, arr2):
answer = [ [' ' for idx in range(n)] for jdx in range(n) ]
answer = calc(answer, n , arr1)
answer = calc(answer, n , arr2)
retValue = []
for item in answer:
str = ''
for ch in item : str += ch
retValue.append(str)
answer = retValue
return answer
if __name__ == '__main__':
'''
1. 지도는 한 변의 길이가 n, 각 칸은 '' 혹은 '#'으로 이루어져 있다.
2. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다.
지도 1, 2 중 어느 하나라도 벽인 부분은 전체 지도에서 벽이다.
3. 지도 1과 2는 각각 정수 배열의 암호로 되어있다.
4. 암호화된 배열은 지도의 각 가로줄 벽 부분을 1, 공백 부분을 0으로 부호화했을 때 얻어지는 이진수에 해당하는 배열
'''
n = 5
arr1 = [9, 20, 28, 18, 11]
arr2 = [30, 1, 21, 17, 28]
answer = solution(n, arr1, arr2)
print(n)
print(arr1)
print(arr2)
print(answer)
'Coding Problem > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv2] - 전화번호 목록 (0) | 2021.06.29 |
---|---|
[프로그래머스/Lv2] - 가장 큰 수 (0) | 2021.06.25 |
[프로그래머스/Lv1] - 키패드 누르기 (카카오) (0) | 2021.05.28 |
[프로그래머스/Lv1] - 소수 찾기 (0) | 2021.05.01 |
[프로그래머스/Lv1] - 문자열 내 마음대로 정렬하기 (0) | 2021.04.29 |