ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 카카오 신입 공채 1차 코딩 테스트 문제 1. 비밀지도(난이도: 하)
    공부 2017. 11. 3. 01:09
    반응형

    카카오 블라인드 채용에 출제된 문제가 공개돼 풀어보았다.

    한 문제당 하나의 클래스로 만들었으며 테스트 코드까지 한꺼번에 올린다.

    실제 채용 시험의 채점이 어떻게 이뤄졌는지 모르지만, 문제에 나와있는 입출력은 모두 만족하는 코드이다.

    강의할 때도 늘 말하는 것이지만, 코드에 정답은 없다.

    문제를 푸는 하나의 방법이 될 수 있음을 기억하고 참고하라.


    문제 1. 비밀 지도(난이도: 하)

    문제 설명과 해설은 아래 링크를 참고하라.

    http://tech.kakao.com/2017/09/27/kakao-blind-recruitment-round-1/


    참고로 위 링크에 나온 문제 1의 입출력 예제는 틀렸다.

    무엇이 틀렸는지는 코드에서 확인하라.



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    import org.junit.Test;
     
    import java.util.Arrays;
     
    import static org.junit.Assert.assertArrayEquals;
     
    public class Q1 {
        public static void main(String[] args) {
        }
     
        @Test
        public void question1_TestCase1() {
            int[] case1_arr1 = {920281811};
            int[] case1_arr2 = {301211728};
    //        String[] case1_out =  {"#####",   "# # #",    "### #",    "# ##",     "#####"};
            String[] case1_out = {"#####""# # #""### #""#  ##""#####"};
            String[] out;
     
            out = question1(5, case1_arr1, case1_arr2);
     
            assertArrayEquals(case1_out, out);
        }
     
        @Test
        public void question1_TestCase2() {
            String[] out;
     
            int[] case2_arr1 = {463333223150};
            int[] case2_arr2 = {275619141410};
    //        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


    반응형
Designed by Tistory.