프로그래머스 lv0 n의 배수 고르기 파이썬
휴... 길다 길어! 그치만 나름 간단...
필요한것. 1. 어떻게 2진수로 변환시킬 것인가? 2. 두개 중 1이 하나라도 있으면~ 을 어떻게 짤것인가? 3. 2진수로 변환할 경우 n의 길이보다 짧으면 어떻게 할것인가? 4. # 과 ' '을 어떻게 붙일것인가?
우선 필요한걸 정리해봤었다. 생각나는건 총 4가지.... 나는
def solution(n, arr1, arr2):
map1 = []
map2 = []
ans = []
for i in range(n):
total = ''
j = 0
map1.append(bin(arr1[i])[2:])
map2.append(bin(arr2[i])[2:])
if len(map1[i]) < n:
map1[i] = '0'*(n-len(map1[i])) + map1[i]
if len(map2[i]) < n:
map2[i] = '0'*(n-len(map2[i])) + map2[i]
for j in range(n):
if map1[i][j] == '0' and map2[i][j] == '0':
total = total + ' '
else:
total = total + '#'
ans.append("".join(total[:]))
return ans
이렇게 짰다.
2진수
로 변환은 bin()
이라는 함수를 썼다.
이렇게 하면
273은 무시하자. 눈물이 날것 같으니까....연습용으로 쓰는 NOTE 이름의 파일.....살앙해
0b
가 무조건 같이 붙기에 [2:]
와 같이 slicing
을 해줘야 2진수가 남는다.
그 후, if문
을 통해서 len()
즉, 길이가 n
보다 작을시에, 부족한 만큼 0
을 붙여줬다.
그리고 for
문을 통해서 하나씩 비교했을때 모두 0
이라면 ' '
를,
else
는 '#'
즉 벽을 만들어주고,
" ".join()
을 통해서 묶어주고 list
에 넣어줬다.
사실... 그렇게 못만든 코드라고 생각하진 않았는데😕, 역시 경험이 부족해서인지... 내가 작성한 for문
3개를 하나로 줄이는 함수
가 있더라는 이야기.... 함수만 알고있었어도....좀 아쉽다...사실 늘 아쉬움....
이걸 좀 정리해둬야겠다... 곧...
비트 연산자. - or(|) : 둘중에 하나만 1이어도 1을 return - and(&) : 둘 모두 1이여야 1을 return - nor(^) : 둘 다 0 일시 1, 둘다 1 일시 0을 return - not(~) : 반대로 return rjust: 첫번째로 입력한 값이 빈만큼 빈칸을 생성 후, 오른쪽으로 정렬 한 뒤 공백 매워줄 문자 입력 ex) a = maps.rjust(n, "0") ljust: 첫번째로 입력한 값이 빈만큼 빈칸을 생성 후, 왼쪽으로 정렬 한 뒤 공백 매워줄 문자 입력 ex) a = maps.rjust(n, "0") zip: iterable 자료형의 각각의 요소를 나눈 후 순서대로 묶어서 요소 개수만큼 새로운 iterable 자료형을 생성한다
위 함수들 중 우선 내 코드에 or
만 사용해도
def solution(n, arr1, arr2):
maps = []
for i in range(n):
maps.append(bin(arr1[i]|arr2[i])[2:])
if len(maps[i]) < n:
maps[i] = '0' * (n - len(maps[i])) + maps[i]
maps[i] = maps[i].replace('1', '#')
maps[i] = maps[i].replace('0', ' ')
return maps
이렇게나 간단해지고, rjust
를 사용시,
def solution(n, arr1, arr2):
answer = []
for i in range(n):
maps = str(bin(arr1[i]|arr2[i])[2:])
maps = maps.rjust(n, '0')
maps = maps.replace('1', '#')
maps = maps.replace('0', ' ')
answer.append(maps)
return answer
이렇게나 간단해진다.... 파이썬 함수 짱...
다들 이렇게 적절한 함수를 어떻게 찾는지 궁금하다.... 다들 경험해봐서 함수를 잘 아는걸까..? 아주 조금 우울....눈가가 촉촉... 나만...감자일까..?
😭😭😭