프로그래머스의 코딩테스트 연습문제 중 2018 카카오 블라인드 채용 1차 ‘비밀지도’ 문제의 정답입니다.
1차 코딩테스트의 첫번째 문제인만큼, 정답률도 81.78%로 높았는데요, 가장 많은 참가언어로는 자바가 전체의 43%, 그 다음이 C++ 36%, 파이썬 11% 등이라고 하네요.
1차 코딩 테스트의 합격 기준은 총 7문제 중 4문제 이상을 풀이한 분들이라고 합니다.
4문제 이상을 풀이한 합격자의 비율은 C++이 25%, 그 다음 파이썬이 24%로 얼마 차이가 나지 않네요! 평균 코드 라인 수도 파이썬이 압도적이라고 합니다. 첫번째 문제는 고작 22줄밖에 안됐다고 해요.
REFERENCE: 2018 카카오 신입 공채 1차 코딩 테스트 문제 해설
저도 파이썬으로 한번 풀어보았는데, 많은 분들이 저와 비슷하게, 혹은 더 짧은 코드로 풀이하셨던 것 같습니다.
코드는 Python3 로 작성되었습니다.
def solution(n, arr1, arr2):
answer = []
for a1, a2 in zip(arr1, arr2): # arr1과 arr2를 zip()으로 묶기
a = str(bin(a1 | a2))[2:] # a1 OR a2를 binary로 바꿔주는 bin() function을 통해 2진수로 바꿔준 후, 불필요한 맨 앞 2자리를 버리기 위해 string으로 변환 후 index slicing
a = '0' * (n - len(a)) + a # index slicing을 하게되면, 0으로 시작하는 2진수의 0들이 사라지기 때문에 입력받은 n의 길이에서 숫자만큼의 수를 뺀만큼 '0'을 곱하고 그 숫자를 더해준다.
a = a.replace('1',"#") # 1은 #으로 replace
a = a.replace('0', " ") # 0은 공백으로 replace
answer.append(a12)
return answer
이 문제는 비트연산 (Bitwise Operation)에 관한 문제로, if else로도 쉽게 풀 수 있지만, OR과 같은 비트연산을 잘 다룰 수 있는지를 보려고 의도한 것이기 때문에 이런 유형은 비트 연산을 꼭 사용하는 것이 좋을 것 같습니다.
감사합니다!