1. 자릿수 더하기

image.png

def solution(n):
    answer = 0
    
    for i in str(n):
        answer += int(i)
    return answer

배울점

정수를 Str로 바꿔서 각 자릿수 더하기

2. 자연수 뒤집어 배열로 만들기

image.png

[int(i) for i in str(n)][::-1]
def solution(n):
    answer = []
    for i in range(1,len(str(n))+1):
        answer.append(int(str(n)[-i]))    
    return answer

3. 비밀지도

image.png

image.png

image.png

def solution(n, arr1, arr2):
    answer = []
    result = ''
    # 지도 한변의 크기 = n
    # arr은 길이가 n인 정수배열 -> 한칸에 가로 한줄
    # 각 가로 한줄인 정수를 이진수로 변환 bin(arr1[0])[2:]
    # 각 배열 n만큼 왼쪽에 0으로 패딩해주기
    # 두 리스트 합집합으로 벽 만들기
    # 각 이진수 한줄을 공백과 샵으로 리스트 만들기
    # 각 만든 리스트를 2차원 리스트로 반환하기

    # 1 + 1 = 1, 1 + 0 = 1, 0 + 0 = 0
    
    #2진수로 decode
    decode_arr1 = [bin(i)[2:] for i in arr1]
    decode_arr2 = [bin(i)[2:] for i in arr2]
    
    #decode된 배열중 len(arr1)만큼 0으로 앞에 패딩해줘야됨
    for i in range(len(decode_arr1)):
        decode_arr1[i] = list(decode_arr1[i])
        while len(decode_arr1[i]) != len(arr1):
            decode_arr1[i].insert(0,"0")
            
    #각 줄 다시 문자열로 바꿔주기
    for i in range(len(decode_arr1)):
        decode_arr1[i]="".join(decode_arr1[i])
        
    # #패딩 후 1은 샵으로, 0은 공백으로 바꾸기 - list.replace(a,b)
    # for i in range(len(decode_arr1)):
    #     decode_arr1[i]=decode_arr1[i].replace("1",'#')
    #     decode_arr1[i]=decode_arr1[i].replace("0",' ')
        
        
        
    #decode된 배열중 len(arr1)만큼 0으로 앞에 패딩해줘야됨
    for i in range(len(decode_arr2)):
        decode_arr2[i] = list(decode_arr2[i])
        while len(decode_arr2[i]) != len(arr2):
            decode_arr2[i].insert(0,"0")
            
    #각 줄 다시 문자열로 바꿔주기
    for i in range(len(decode_arr2)):
        decode_arr2[i]="".join(decode_arr2[i])
        
    #패딩 후 1은 샵으로, 0은 공백으로 바꾸기 - list.replace(a,b)
     # for i in range(len(decode_arr2)):
     #     decode_arr2[i]=decode_arr2[i].replace("1",'#')
     #     decode_arr2[i]=decode_arr2[i].replace("0",' ')
    
     #이제 decode_arr1, decode_arr2를 합집합 해주면 됨
    for j in range(len(decode_arr1)):
        for x, y in zip(decode_arr1[j], decode_arr2[j]):
            result += str(int(x) | int(y))
        answer.append(result)
        result = ''
        
    # 합집합 한 리스트를 1은 샵으로, 0은 공백으로 replace하기
    for i in range(len(answer)):
        answer[i]=answer[i].replace("1",'#')
        answer[i]=answer[i].replace("0",' ')
    return answer

배울점

  1. replace함수는 문자열에서만 사용 가능하다.
  2. bin()함수에서 앞의 0b를 빼려면 뒤에[:2]를 붙여야됨
  3. 이진수 두 문자열을 합집합 하는 방법은 두 문자열을 zip으로 묶어서 각 문자열에서 문자를 한개씩 for문으로 가져온다음 int형의 두개가 같은지 다른지 | 연산으로 확인
  4. append() 는 리스트 맨뒤에 넣는거니깐, insert(index,원소) 를 쓰면 됨.

for i,j in zip(arr1,arr2): 는 두 리스트에 있는 값을 튜플로 묶어서 같이 쓸 수 있는 조건임.

4. 제일 작은 수 제거하기

image.png