ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1/17기록 - 프로그래머스 2018 카카오 코테#2
    Algorithm 2022. 1. 17. 10:35
    728x90

    즐겁게 놀고 난 주말 이후 월요일 아침에 도전해본 2018 카카오 코테 level 1 비밀지도 문제

     

    일단 문제가 엄청나게 길었다. 

    긴 문제들을 잘 읽어 보면 벽은 #으로 길은 공백으로 표현되고, 이진수로 표현했다가 출력은 String 형태의 #과 공백으로 표현하면 되는거다. 긴 문제에 비해 이해하는 건 매우 쉬웠음.

     

    알고리즘 생각

    1. n길이의 answer 배열 선언

    2. Integer.toBinaryString()을 이용해서 이진수로 변환

    3. arr1과 arr2배열의 합집합으로 최종 지도가 완성되기 때문에 비트 연산자 or(|)를 사용

    4. replace(old, new)를 사용해서 old를 new로 변환

    5. 맨 앞이 공백인 경우에 대한 표현

     

     

     

    이렇게 풀었다. 이 문제에서 toBinaryString(), replace() 메소드도 중요하겠지만, 나는 중간에 if문이 가장 중요하다고 생각한다. 조건 3번에서 이진수로 변환했을 때, n 보다 작게 되는 경우를 놓치게 되면, 앞자리에 공백이 오는 입력 2번을 만족시키지 못하기 때문이다. 

     

    앞에 공백이 올 수 있도록, n보다 작은 경우 s.length() 부터 n까지 앞자리에 0을 넣어주도록 프로그램을 짜주어야 입력 2를 만족시킬 수 있다. 이 부분을 간과하여 시간을 많이 소모했다.

     

    문제를 모두 풀고 나서 다른 사람의 풀이를 보는데, String.format()을 사용하여 앞자리 0을 넣어주는 방식이 있었다. 이진수를 포맷화 하여 String으로 바꿔주면서 맨 앞에 0도 자연스럽게 넣어주는 방식이었다. 대 충격...

     

    result[i] = String.format("%" + n + "s", result[i]);

    이런식으로 사용했다. 

     

    **Integer.toBinaryString() : 10진수를 2진수로 변환

    **replace(old, new) : old를 new로 변환

    **String.format() : 포맷형식을 사용해서 출력 형식을 만들기

    728x90

    'Algorithm' 카테고리의 다른 글

    1/18기록 #2 - 백준 1159  (0) 2022.01.18
    1/18기록 #1 - 백준 1075번  (0) 2022.01.18
    1/14기록 - 프로그래머스 카카오 코테 #1  (0) 2022.01.14
    1/13기록 - 백준 2309  (0) 2022.01.13
    1/12기록 - 프로그래머스 문제풀이 #3  (0) 2022.01.12
Designed by Tistory.