{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "다음카카오에서 채용 면접을 위해 제출되었던 난이도 하의 문제이다. \n", "\n", "배열과 그리고 비트 연산자(검색해서 이해할 필요가 있음)만 알면 풀 수 있는 문제이다. \n", "\n", "# 문제 설명\n", "\n", "네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.\n", "\n", "1. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 “공백”(“ “) 또는 “벽”(“#”) 두 종류로 이루어져 있다.\n", "2. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 “지도 1”과 “지도 2”라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다.\n", "3. “지도 1”과 “지도 2”는 각각 정수 배열로 암호화되어 있다.\n", "4. 암호화된 배열은 지도의 각 가로줄에서 벽 부분을 1, 공백 부분을 0으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다.\n", "\n", "![The Secret Map](http://t1.kakaocdn.net/welcome2018/secret8.png)\n", "\n", "\n", "## Your Goal\n", "\n", "네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.\n", "\n", "\n", "## Input Format\n", "\n", "입력으로 지도의 한 변 크기 n 과 2개의 정수 배열 arr1, arr2가 들어온다.\n", "* 1 ≦ n ≦ 16\n", "* arr1, arr2는 길이 n인 정수 배열로 주어진다.\n", "* 정수 배열의 각 원소 x를 이진수로 변환했을 때의 길이는 n 이하이다. 즉, $0 ≦ x ≦ 2^n - 1$을 만족한다.\n", "\n", "## Output Format\n", "\n", "원래의 비밀지도를 해독하여 \"#\", 공백으로 구성된 문자열 배열로 출력하라.\n", "\n", "\n", "## Example of Input and Output format\n", "\n", "* example with 5 inputs\n", "\n", "Parameters | Values\n", "------------ | ------- \n", "n | 5\n", "arr1 | $[9, 20, 28, 18, 11]$\n", "arr2 | $30, 1, 21, 17, 28]$\n", "Output | $[\"#####\",\"# # #\", \"### #\", \"# ##\", \"#####\"]$\n", "\n", "* example with 6 inputs\n", "\n", "Parameters | Values\n", "------------ | ------- \n", "n | 6\n", "arr1 | $[46, 33, 33 ,22, 31, 50]$\n", "arr2 | $[27 ,56, 19, 14, 14, 10]$\n", "Output | $[\"######\", \"### #\", \"## ##\", \" #### \", \" #####\", \"### # \"]$\n", "\n", "\n", "## Hint\n", "이 문제는 비트 연산Bitwise Operation을 묻는 문제이다. 이미 문제 예시에 2진수로 처리하는 힌트가 포함되어 있고, 둘 중 하나가 1일 경우에 벽(#)이 생기기 때문에 OR로 처리하면 간단히 풀 수 있다.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Submit\n", "\n", "* Two weeks from announcement.\n", "* Submit code and explanation through Piazza\n", "* NO CHEATING. IF FOUND, ZERO POINTS" ] } ], "metadata": { "kernelspec": { "display_name": "C", "language": "c", "name": "c" }, "language_info": { "file_extension": ".c", "mimetype": "text/plain", "name": "c" } }, "nbformat": 4, "nbformat_minor": 2 }