0. 문제
프로그래머스 카카오 1차 비밀지도
https://programmers.co.kr/learn/courses/30/lessons/17681
1. bin( ) - 이진수 변환하기
bin(x)의 변환 결과는 십진수 x를 <0b>가 앞에 붙은 이진 문자열이다.
print(bin(3))
# 0b11
print(type(bin(-10)))
# <class 'str'>
따라서 보통 우리가 원하는 이진수로 변환해주려면
int(bin(x)[2:]) 를 해주면 된다.
2. rjust( ) - 오른쪽 정렬하기
문자열.rjust(전체 자리 숫자, 공백이 있을 경우 공백 대체 문자) 로 사용하면 된다.
공백을 그냥 둘 경우엔 두번째 인자에 아무것도 안 넣으면 된다.
왼쪽 정렬은 ljust()를 사용할 수 있다.
대신 rjust()를 사용한다고 해서 그 문자열 자체가 바뀌는 것은 아니므로 주의!
name = ["mijin", "gummy", "mjk", "K"]
for i in name:
print(i.rjust(8, "."))
"""
실행 결과
...mijin
...gummy
.....mjk
.......K
"""
3. replace() - 문자열에서 특정 문자만 변경하기
replace(old, new, [count]) -> replace(찾을 값, 바꿀 값, 바꿀 횟수) 로 사용하면 된다.
바꿀 횟수를 지정해주지 않으면 그냥 모든 문자가 바꿀 값으로 바뀐다.
아래 문제에서 코드는 확인할 수 있다.
4. 내 소스코드 & 효율적인 코드
위에 내장함수들을 아무것도 몰라서 정말 밑바닥부터 모두 코드로 작성했다... 매우 비효율적이지만, 그래도 정말 기본적인 문법만으로도 구현을 해낸 게 뿌듯했다 ㅋㅋㅋ
# 카카오 블라인드 [1차] 비밀지도
# 소스1.
# bin() 함수를 쓰지 않은 비효율적인 코드 -> 내장함수들 기록하고 기억해두기!
def solution2(n, arr1, arr2):
map = []
for x in range(len(arr1)):
y = ""
while arr1[x] > 0:
y = str(arr1[x] % 2) + y
arr1[x] //= 2
arr1[x] = "0" * (n - len(y)) + y
for x in range(len(arr2)):
y = ""
while arr2[x] > 0:
y = str(arr2[x] % 2) + y
arr2[x] //= 2
arr2[x] = "0" * (n - len(y)) + y
for i in range(len(arr1)):
answer = ""
num = int(arr1[i]) + int(arr2[i])
num = "0" * (len(arr1) - len(str(num))) + str(num)
for x in num:
if int(x) >= 1:
answer += "#"
else:
answer += " "
map.append(answer)
return map
아래는 다른 사람들이 작성한 효율적인 코드이다.
# 소스2.
# bin() 함수 10진수를 2진수로 만드는 함수
# rjust() 오른쪽 정렬 함수
# replace() 문자열에서 특정 문자열을 다른 문자열로 바꾸는 함수
def solution(n, arr1, arr2):
answer = []
for i,j in zip(arr1,arr2):
a12 = str(bin(i|j)[2:])
print(a12)
a12 = a12.rjust(n,'0')
a12 = a12.replace('1','#')
a12 = a12.replace('0',' ')
answer.append(a12)
return answer
'Programming Languages > Python' 카테고리의 다른 글
[Python] 딕셔너리 관련 함수들 (keys, values, items, clear, in) (0) | 2022.02.24 |
---|---|
[Python] 문자열 관련 유용한 함수들 (0) | 2022.02.18 |
[Python] 파이썬 문자열 내 마음대로 정렬하기 - sorted 함수에서 key lambda 사용해서 정렬 기준 여러 개 반영하기 (0) | 2021.09.07 |
[Python] 파이썬 정렬함수 sort, sorted에서 reverse, key lambda 사용하기 (0) | 2021.09.04 |
[Python] 파이썬 리스트의 문자열을 int로 바꾸는 방법 - map (0) | 2021.08.28 |