프로그래머스 | 2018 KAKAO BLIND RECRUITMENT | 비밀지도 [파이썬 python]

2023. 3. 28. 14:57·Algorithm/프로그래머스
 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

school.programmers.co.kr

문제 설명까지 하면 길어질 것 같아 코드에 대한 설명만 남깁니다.

 

코드

def solution(n, arr1, arr2):
    answer = []
    for i in range(n):
        arr1[i] = format(arr1[i], 'b').zfill(n)
        arr2[i] = format(arr2[i], 'b').zfill(n)
        
        temp = ''
        for a, b in zip(arr1[i], arr2[i]):
            if a == '0' and b == '0':
                temp += ' '
            if a == '1' or b == '1':
                temp += '#'
        answer.append(temp)
        
    return answer

두 배열 arr1과 arr2의 요소를 하나씩 가져와 bin() 함수를 이용해 2진수로 바꿔준다.

이 2진수를 n자리로 나타내기 위해 zfill()을 사용하였다.  

예를 들어, 이진수 1001에 zfill(5)를 적용시키면 01001이 된다. 빈자리에 0을 채워 5자리 수로 만들 수 있다.

 

그 다음, arr1의 이진수와 arr2의 이진수를 비교한다. 

문제에서 "지도 1 또는 지도 2 중 어느 하나라도 벽(=1)인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백(=0)인 부분은 전체 지도에서도 공백이다."라고 제시하였으므로 조건문을 세워 암호문으로 바꾼다.

if a == '0' and b == '0':
	temp += ' '
if a == '1' or b == '1':
	temp += '#'

벽은 '#'으로 공백은 ' '으로 나타낸 암호문은 temp에 저장한다.

완성된 암호문 temp를 answer에 추가하면 된다.

 

첫 번째 테스트 케이스를 가지고 직접 코드를 실행시켜 보았다.

출력 결과의 첫 번째 줄은 n자리의 이진수, 두 번째 줄은 temp이다.

temp를 answer에 모두 append 하면 아래와 같은 답을 구할 수 있다.

 

다른 사람의 코드

def solution(n, arr1, arr2):
    answer = []
    for i,j in zip(arr1,arr2):
        a12 = str(bin(i|j)[2:])
        a12=a12.rjust(n,'0')
        a12=a12.replace('1','#')
        a12=a12.replace('0',' ')
        answer.append(a12)
    return answer

전체 과정은 크게 다르지 않다.

이 코드에서 배울 점은

1) bin() 함수를 사용할 때 arr1의 요소와 arr2의 요소를 2진수로 바꾸고, 두 2진수의 | 연산 결과를 사용했다는 점

2) rjust() 함수를 사용하며 n자리를 만들기 위해 왼쪽을 '0'으로 채웠다는 점

두 가지이다.

1)에서 | 연산의 결과를 구했기 때문에 내가 작성한 코드처럼 비교하는 과정 없이 replace를 함수를 사용해 코드를 간결하게 나타낼 수 있다.

 

비록 아직 lv.1이지만 처음으로 카카오 문제를 접해보고 스스로 해결해서 신기하고 뿌듯했다!!!!!!!!!!!!!!!!!

저작자표시 (새창열림)
'Algorithm/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 | 콜라 문제 [파이썬 python]
  • 프로그래머스 | 2021 카카오 채용연계형 인턴십 | 숫자 문자열과 영단어 [파이썬 python]
  • 프로그래머스 | 예산 [파이썬 python]
  • 프로그래머스 | 이상한 문자 만들기 [파이썬 python]
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (46)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
프로그래머스 | 2018 KAKAO BLIND RECRUITMENT | 비밀지도 [파이썬 python]
상단으로

티스토리툴바