코딩테스트/💯프로그래머스 코딩테스트 연습

프로그래머스 2018 KAKAO BLIND RECRUITMENT > 1차 비밀지도

1son 2022. 10. 29. 07:19

 

🌼 비상금을 숨겨놓은 비밀지도를 찾았다! ( •̀ ω •́ )✧

 

문제는 이해 완.

공백과 벽 을 이진수로 변환한거 를 보고 출력을 하면되는데 

모르겠다 ..^^

 

 

 

https://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/

 

카카오 신입 공채 1차 코딩 테스트 문제 해설

‘블라인드’ 전형으로 실시되어 시작부터 엄청난 화제를 몰고 온 카카오 개발 신입 공채. 그 첫 번째 관문인 1차 코딩 테스트가 지난 9월 16일(토) 오후 2시부터 7시까지 장장 5시간 동안 온라인

tech.kakao.com

문제 해설

" 이 문제는 비트 연산Bitwise Operation을 묻는 문제입니다. 이미 문제 예시에 2진수로 처리하는 힌트가 포함되어 있고, 둘 중 하나가 1일 경우에 벽 #이 생기기 때문에 OR로 처리하면 간단히 풀 수 있습니다. 아주 쉬운 문제였던 만큼 if else로 풀이한 분들도 많이 발견되었는데요. 정답으로는 간주되지만 이 문제는 비트 연산을 잘 다룰 수 있는지를 묻고자 하는 의도였던 만큼 앞으로 이런 유형의 문제를 풀 때는 비트 연산을 꼭 기억하시기 바랍니다.

이 문제의 정답률은 81.78%입니다. 첫 번째 문제이고 가장 쉬운 문제였던 만큼 많은 분들이 잘 풀어주셨습니다. "

 

비트 연산을 묻는 문제... 기억하자 

 

https://ckd2806.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-python-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%B9%84%EB%B0%80%EC%A7%80%EB%8F%84

 

[파이썬 python] 프로그래머스 - 비밀지도

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

ckd2806.tistory.com

코드몽키님의 블로그를 참고했다.

 

def solution(n, arr1, arr2):
    answer = []
    
    for i in range(n): #한변의 크기 만큼 반복해요
        tmp=bin(arr2[i] | arr1[i])
        print(tmp)
    return answer

 

 

일단 오늘은 여기까지..

 

+ 2022-11-07

 

파이썬에서 숫자를 출력하고자 하는데, 앞에 0을 붙여주고 싶을 때

zfill() 함수를 사용합니다. zfill함수의 매개변수는 나오는 출력값의 자리수 인 것 같습니다. 

여기서는 어떻게 쓰이느냐..

20같은 경우는 5개 10100 으로 나와서 상관이 없죠

근데 9는 1001으로 4개 가 나옵니다. 이렇게 4개씩 나오는게 2개가 비트연산된거라면?

n개 가 되지 못하지요 . 우리가 필요한 숫자 갯수는 5개 이기 때문에 앞에 빈 공간을 

0으로 채워주기 위해 zfill() 를 사용하는 것입니다. 

 

def solution(n, arr1, arr2):
    answer = []
    
    for i in range(n): #한변의 크기 만큼 반복해요
        tmp=bin(arr2[i] | arr1[i])
        # print(tmp)
        tmp=tmp[2:].zfill(n)
        print(tmp)

 

 

 

완성된 코드 

def solution(n, arr1, arr2):
    answer = []
    
    for i in range(n): #한변의 크기 만큼 반복해요
        tmp=bin(arr2[i] | arr1[i])
        # print(tmp)
        tmp=tmp[2:].zfill(n)
        #print(tmp)
        tmp = tmp.replace('1','#').replace('0',' ')
        answer.append(tmp)
    return answer

2022-11-09 >> 두 번째 풀이

| 이 연산자로 계산할 수 있다는거 , 한변의 크기만큼 반복한다는 거,

replace 함수 사용한다는거 append 함수 사용한다는거 기억