https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
👩🏻💻 내가 작성한 코드
-> 이건 감을 못잡겠어서 토끼반 강의자료 보고 작성했다 ㅠ.ㅠ
def solution(n, arr1, arr2):
answer = [''] * n
for i in range(len(arr1)):
bin1 = bin(arr1[i])[2:].zfill(n)
bin2 = bin(arr2[i])[2:].zfill(n)
for j in range(n):
if bin1[j] == '0' and bin2[j] == '0':
answer[i] += ' '
else:
answer[i] += '#'
return answer
🔍 문제 이해
1. 입력으로 들어온 두 배열을 이진수로 변환
2. 두 배열을 AND 연산
3. 0은 공백, 1은 # 로 출력
🔑 문제 풀이
1. 입력으로 들어오는 두 배열을 이진수로 변환
print(bin(1))
print(bin(2))
print(bin(3))
print(bin(4))
print(bin(5))
print(bin(6))
print(bin(7))
0b1
0b10
0b11
0b100
0b101
0b110
0b111
-> 내가 원하는 결과는 0b뒤의 숫자들이다 그래서 slicing 으로 잘라내기!
print(bin(1)[2:])
print(bin(2)[2:])
print(bin(3)[2:])
print(bin(4)[2:])
print(bin(5)[2:])
print(bin(6)[2:])
print(bin(7)[2:])
1
10
11
100
101
110
111
-> 근데 이제 자리수를 통일하려고 한다! : 문자열 앞에 "0" 채우기 -> zfill()
print(bin(1)[2:].zfill(3))
print(bin(2)[2:].zfill(3))
print(bin(3)[2:].zfill(3))
print(bin(4)[2:].zfill(3))
print(bin(5)[2:].zfill(3))
print(bin(6)[2:].zfill(3))
print(bin(7)[2:].zfill(3))
001
010
011
100
101
110
111
-> 이 원리를 이용해서 함수를 작성해보자!
for i in range(len(arr1)):
bin1 = bin(arr1[i])[2:].zfill(n)
bin2 = bin(arr2[i])[2:].zfill(n)
-> 배열의 한 변의 길이가 n == n만큼 0으로 채움
2. AND 연산하기
if bin1[j] == '0' and bin2[j] == '0’:
answer[i] += ' ‘
else:
answer[i] += '#'
3. 최종 코드
def solution(n, arr1, arr2):
answer = [''] * n
for i in range(len(arr1)):
bin1 = bin(arr1[i])[2:].zfill(n)
bin2 = bin(arr2[i])[2:].zfill(n)
for j in range(n):
if bin1[j] == '0' and bin2[j] == '0':
answer[i] += ' '
else:
answer[i] += '#'
return answer
'Coding Test > Programmers' 카테고리의 다른 글
프로그래머스 - Level.1 문자열을 정수로 바꾸기 (Python) (0) | 2022.11.21 |
---|---|
프로그래머스 - Level.1 두 정수 사이의 합 (Python) (0) | 2022.11.21 |
프로그래머스 - Level.1 없는 숫자 더하기 (Python) (0) | 2022.11.18 |
프로그래머스 - Level.1 약수의 개수와 덧셈(Python) (0) | 2022.11.18 |
프로그래머스 - (카카오 2021)숫자 문자열과 영단어 (Python) (0) | 2022.11.17 |