728x90
반응형
- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/17681
- level1
- 프로그래머스
Q1) 문제를 어떻게 이해했나요?
A1) 주어진 두 지도를 각각 이진수 형태로 변환하고, 각 위치에서 둘 중 하나라도 벽(1)이면 전체 지도에서 벽으로 표시해야합니다.
Q2) 어떤 방식으로 풀건가요?
A2) OR 연산을 수행하여 둘 중 하나라도 1이면 1이 되도록 처리를 합니다. 그리고, 그 결과를 n자리의 2진수로 변환합니다.
2진수 문자열에서 '1' 은 '#'으로 '0'은 ' '으로 치환하여 리스트로 반환합니다.
🔥 내 코드: 2진수를 직접 구하는 함수를 만들었음
def num_to_2(n, num):
result = ""
while num > 0:
result = str(num % 2) + result
num //= 2
if len(result) < n:
result = "0" * (n - len(result)) + result
return result
def solution(n, arr1, arr2):
answer = []
for x, y in zip(arr1, arr2):
ans = ""
x2 = num_to_2(n, x)
y2 = num_to_2(n, y)
for i in range(n):
if x2[i] == "1" or y2[i] == "1":
ans += "#"
else:
ans += " "
answer.append(ans)
return answer
💡 최적화된 코드: 2진수를 바로 구할 수 있는 format(num, "b")함수 사용
def solution(n, arr1, arr2):
answer = []
for i in range(n):
# 비트 OR 연산
combined = arr1[i] | arr2[i]
# 이진수로 변환, n자리로 맞추기
binary_str = format(combined, 'b').zfill(n)
# '#'과 ' '로 변환
line = ''.join(['#' if c == '1' else ' ' for c in binary_str])
answer.append(line)
return answer
728x90
반응형
'Algorithm' 카테고리의 다른 글
[카카오 코테 2019 | python] 인턴십크레인 인형뽑기 게임 ✅ (1) | 2025.06.23 |
---|---|
[백준 15649 | python] N과 M (1) (백트레킹) (0) | 2025.06.21 |
[카카오 코테 2018 | python] [1차] 다트 게임 (0) | 2025.06.19 |
[카카오 코테 2023 | python] 개인정보 수집 유효기간 (0) | 2025.06.18 |
[카카오 코테 2022 | python] 양궁대회 (0) | 2025.06.17 |