코딩테스트/PYTHON

[프로그래머스][PYTHON] Lv. 1 [1차] 비밀지도

_알파카 2024. 8. 14. 14:57
728x90

문제 설명

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2017년 카카오 신입 공채 코딩 테스트 1번 문제이다. 

비트 연산을 이용하는 문제이다. 

 

정답 풀이

def solution(n, arr1, arr2):
    answer = []

    for i in range(n):
        # 2진수 연산 진행
        num = bin(arr1[i] | arr2[i])
        # 자리수를 통일해주는 함수(zfill)
        num = num[2:].zfill(n)
        num = num.replace("1", "#")
        num = num.replace("0", " ")
        answer.append(num)
    return answer

 

문제의 숫자 중 둘 중 하나가 1일 경우에는 벽(#)이 생기기 때문에 OR(|)을 사용하면 잘 풀 수 있다. 

정답률이 81.78%라고 하는데, 나는 제대로 못 풀었다ㅠㅠ

 

1. 먼저, 주어진 n만큼 for문을 순회하며, 

2. bin 함수를 이용해 2진수로 변환함과 동시에 OR 연산을 활용한다. 

3. 2진수로 변환하면 0bxxx와 같은 형식이기 때문에 앞의 2자리를 없애주고, 

00001인 경우는 그냥 1로 출력되기 때문에 '00001'로 출력될 수 있게 zfill 함수를 사용해준다. 

4. 마지막으로 1을 #으로, 0을 공백으로 변환하여 answer에 넣어준다. 

 

 

2진수를 처리하는 것 까지는 해결했는데, 

그 후 공백을 채울 방법을 생각해내는 것이 어려웠다. 

 

 

++ zfill 함수에 관한 내용을 별도의 글로 남겨두었다! 까먹지 말자! 

https://yeonnys.tistory.com/entry/PYTHON-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%B1%84%EC%9A%B0%EA%B8%B0-zfill-rjust-ljust-center

 

[PYTHON] 문자열 채우기 - zfill, rjust, ljust, center

원하는 길이의 문자를 만들어야할 때, 빈 문자열을 만들어 for문 등을 통해 채울 수도 있지만, 파이썬에는 내장함수로 이미 이 기능을 제공해주고 있다. 이때 사용할 수 있는 함수가 바로 zfill, r

yeonnys.tistory.com

 

728x90