Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

그냥하는코딩

프로그래머스 1단계 - [1차 비밀지도] 본문

부스트캠프 준비기/코딩테스트 알고리즘

프로그래머스 1단계 - [1차 비밀지도]

UKkim 2021. 5. 21. 23:32

https://programmers.co.kr/learn/courses/30/lessons/17681

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

카카오 2018년도 블라인드 채용 문제입니다.

 

1. 문제이해

 - 이진법 변환에 대한 이해

 - or 문에 대한 구현

 

2. 코드작성

def solution(n, arr1, arr2):
    answer = []
    
    # 이진법으로 변환한 값을 담는 공간
    arrBinary1 = []
    arrBinary2 = []
    
    for i in range(len(arr1)):
        # 임시 String 을 담는 공간
        tempStr1 = ''
        tempStr2 = ''
        
        # 이진법 구하기
        while arr1[i] > 0:
            tempStr1 = str(arr1[i] % 2) + tempStr1
            arr1[i] = arr1[i] // 2
            
        while arr2[i] > 0:
            tempStr2 = str(arr2[i] % 2) + tempStr2
            arr2[i] = arr2[i] // 2            

        # 빈공간에 0으로 채워넣기
        arrBinary1.append(tempStr1.rjust(n, '0'))
        arrBinary2.append(tempStr2.rjust(n, '0'))
    
    for i in range(n):
        tempAnswer = ''
        for j in range(n):
            # or 문으로 둘중 하나라도 1이면 #
            if arrBinary1[i][j] == '1' or arrBinary2[i][j] == '1':
                tempAnswer = tempAnswer + '#'
            else:
                tempAnswer = tempAnswer + ' '
        answer.append(tempAnswer)
    
    return answer

※ 시간복잡도

3. 풀이 간 체크사항

 1) n개만큼 공백 채우기

"5".rjust(5, '0') # 00005
"5".ljust(5, '0') # 50000
"5".zfill(5) # 00005

 2) 이진수 구하기 및 바이트 or연산

b = bin(8) # 0b1000
bin(a|b) # or
bin(a&b) # and
bin(a^b) # xor
bin(~a)  # not

 

파이썬 함수를 모르니까 소스가 길어지는것 같다...

Comments