Coding Test/Programmers_Python

[Python] 오늘의 연습 문제 풀기 3편

  • -
728x90

2022-11-28일 직접 푼 오늘의 연습 문제에 관한 내용입니다

정답률에 대한 정보는 작성일을 기준으로 기록된 것으로 추후 변동될 수 있습니다

 

[1차] 비밀지도(Lv.1)(정답률 68%)


추가로 알아야 할 함수/메소드 

  • zip()
  • rjust - 우측 정렬

코드 작동 방식

1. arr1과 arr2의 10진수들을 2진수로 변환한다

1+. 이 때, bin함수를 쓸 경우 b0가 붙으므로 그만큼 슬라이싱 해준다

2. arr12라는 변수에 우측정렬 후 빈 공간을 0으로 채운다

3. arr12변수에 들어가있는 1을 #으로, 0을 공백으로 대체한다

4. answer에 최종 지도 기호 한 줄을 넣는다

5. 완성된 전체 지도를 반환한다


코드

def solution(n, arr1, arr2):
    answer = [] # 최종 지도를 담을 배열
    for i,j in zip(arr1,arr2): # zip 함수를 이용해 두 인덱스 동시 반복
        arr12 = str(bin(i|j)[2:])
        # zip함수를 이용할 시 a|b 형식으로 두 인덱스 입력 
        # bin함수를 이용 시 2진수로 변환됨과 동시에 앞에 b0가 붙는다
        # 그렇기에 [2:]를 이용해 이를 제외한 문자열을 담는다
        arr12 = arr12.rjust(n,'0')
        # 배열길이 n에서 우측정렬 후 0으로 채워넣기
        arr12 = arr12.replace('0',' ') # 0을 공백으로 변환
        arr12 = arr12.replace('1','#') # 1을 #으로 변환
        # 이 때, zip으로 묶여있기에 다음과 같은 규칙이 적용된다
        # 00 -> ' ' + ' ' -> ' '
        # 10, 01 -> '#' + ' ' -> '#'
        # 11 -> '#' + '#' -> '#'
        answer.append(arr12) # 완성된 한 줄을 answer에 추가
    return answer # 완성된 보물지도 반환

유의사항

rjust와 같은 함수와 관련된 코드들은 str형태의 자료에서만 작동되기 때문에

숫자를 넣어 조작하려고 하면 임의로 str형태의 수를 사용해야 한다

ex) 1(X), '1'(O)

int형태로 rjust 실행 결과


실행결과

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.