-
카카오 신입 공채 1차 코딩 테스트 문제 1. 비밀지도(난이도: 하)공부 2017. 11. 3. 01:09반응형
카카오 블라인드 채용에 출제된 문제가 공개돼 풀어보았다.
한 문제당 하나의 클래스로 만들었으며 테스트 코드까지 한꺼번에 올린다.
실제 채용 시험의 채점이 어떻게 이뤄졌는지 모르지만, 문제에 나와있는 입출력은 모두 만족하는 코드이다.
강의할 때도 늘 말하는 것이지만, 코드에 정답은 없다.
문제를 푸는 하나의 방법이 될 수 있음을 기억하고 참고하라.
문제 1. 비밀 지도(난이도: 하)
문제 설명과 해설은 아래 링크를 참고하라.
http://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/
참고로 위 링크에 나온 문제 1의 입출력 예제는 틀렸다.
무엇이 틀렸는지는 코드에서 확인하라.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152import org.junit.Test;import java.util.Arrays;import static org.junit.Assert.assertArrayEquals;public class Q1 {public static void main(String[] args) {}@Testpublic void question1_TestCase1() {int[] case1_arr1 = {9, 20, 28, 18, 11};int[] case1_arr2 = {30, 1, 21, 17, 28};// String[] case1_out = {"#####", "# # #", "### #", "# ##", "#####"};String[] case1_out = {"#####", "# # #", "### #", "# ##", "#####"};String[] out;out = question1(5, case1_arr1, case1_arr2);assertArrayEquals(case1_out, out);}@Testpublic void question1_TestCase2() {String[] out;int[] case2_arr1 = {46, 33, 33, 22, 31, 50};int[] case2_arr2 = {27, 56, 19, 14, 14, 10};// String[] case2_out = {"######", "### #", "## ##", " #### ", " #####", "### # "}String[] case2_out = {"######", "### #", "## ##", " #### ", " #####", "### # "};out = question1(6, case2_arr1, case2_arr2);assertArrayEquals(case2_out, out);}public String[] question1(int n, int[] arr1, int[] arr2) {if(n < 1 || n > 16)return null;String[] arr = new String[n];for (int i = 0; i < n; i++) {arr[i] = Integer.toBinaryString(arr1[i] | arr2[i]);arr[i] = String.format("%" + n + "s", arr[i].replace("0", " "));arr[i] = String.format("%" + n + "s", arr[i].replace("1", "#"));}return arr;}}cs 반응형