[2018 KAKAO BLIND RECRUITMENT] 비밀지도(Python)

2023. 12. 20. 09:48· 코딩 테스트 준비/카카오
목차
  1. 📝 문제
  2. ✅ 풀이

📝 문제

💡 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다.
그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다.
다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.

지도는 한 변의 길이가 n인 정사각형 배열 형태로,
각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다.
전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다.
각각 "지도 1"과 "지도 2"라고 하자.
지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다.
지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다.

"지도 1"과 "지도 2"는 각각 정수 배열로 암호화되어 있다.
암호화된 배열은 지도의 각 가로줄에서 벽 부분을 1,
공백 부분을 0으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다.

네오가 프로도의 비상금을 손에 넣을 수 있도록,
비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.
[제한사항]
- 1 ≦ n ≦ 16
- arr1, arr2는 길이 n인 정수 배열로 주어진다.
- 정수 배열의 각 원소 x를 이진수로 변환했을 때의 길이는 n 이하이다. 즉, 0 ≦ x ≦ 2n - 1을 만족한다.

 

문제링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


✅ 풀이

def solution(n, arr1, arr2):
    answer = ["" for i in range(n)]
    map1 = []
    map2 = []
    for item in arr1:
        temp = []
        while item > 1:
            temp.append(item%2)
            item = item // 2
        temp.append(item)
        while n > len(temp):
            temp.append(0)
        temp.reverse()
        map1.append(temp)

    for item in arr2:
        temp = []
        while item > 1:
            temp.append(item%2)
            item = item // 2
        temp.append(item)
        while n > len(temp):
            temp.append(0)
        temp.reverse()
        map2.append(temp)

    for i in range(n):
        for j in range(n):
            if map1[i][j] == 1 or map2[i][j] == 1:
                answer[i] += "#"
            else:
                answer[i] += " "
    return answer
💡 arr1, arr2의 각 숫자들을 이진수로 변환하여 별도의 리스트에 저장했다.
자릿수를 n으로 맞춰야하기 때문에,
길이가 n보다 작을 경우는 이진수 앞에 0을 필요한 만큼 추가해주었다.

이진수로 변환한 내용을 바탕으로 지도 1과 지도 2를 만들었으며,
둘 중 하나라도 1이 표기된 부분에 대해 #을, 아닌 부분은 공백을 표시하도록 했다.
저작자표시 비영리 변경금지 (새창열림)
  1. 📝 문제
  2. ✅ 풀이
'코딩 테스트 준비/카카오' 카테고리의 다른 글
  • [2020 KAKAO BLIND RECRUITMENT] 문자열 압축(Python)
  • [2018 KAKAO BLIND RECRUITMENT] 파일명 정렬(Python)
  • [2019 KAKAO BLIND RECRUITMENT] 실패율(Python)
  • [2019 카카오 개발자 겨울 인턴십] 크레인 인형뽑기 게임(Python)
zzzini
zzzini
종착지는 어디인지 모르지만
zzzini
나의 표류일지
zzzini
전체
오늘
어제
  • 분류 전체보기 (308)
    • ASAC 빅데이터 분석가 4기 (44)
      • Python기초 (6)
      • SQL (3)
      • Matplotlib & Seaborn (2)
      • Data Handling (6)
      • Web Crawling (3)
      • Machine Learning (9)
      • Deep Learning (10)
      • 데이터 분석 (1)
      • 기타 (2)
      • 수학 (2)
    • 코딩 테스트 준비 (168)
      • 5정한 (132)
      • 카카오 (14)
      • PCCP & PCCE (3)
      • 프로그래머스 (19)
    • 자격증 (35)
      • AWS CLF-C02 (18)
      • AWS SAA-C03 (1)
      • Tableau Desktop Specialist (5)
      • Tableau Certified Data Anal.. (11)
    • 독서 (17)
    • Tech (24)
      • Tableau (11)
      • AI (4)
      • Flask (1)
      • Node.js (2)
      • Cloud Computing (2)
      • Git & GitHub (1)
      • Notion API (1)
      • Linux (2)
    • Projects (2)
    • 알고리즘 공부 (6)
    • 🎵 (11)

블로그 메뉴

  • 글 쓰기
  • 홈
  • 방명록

공지사항

hELLO · Designed By 정상우.v4.2.1
zzzini
[2018 KAKAO BLIND RECRUITMENT] 비밀지도(Python)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.