티스토리 뷰

문제

프로그래머스 2018 카카오 공채 - 비밀지도

 

프로그래머스

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

programmers.co.kr

 


풀이

  • 배열로 입력받은 10진수들을 모두 2진수로 바꿔줘야한다 -> Integer.toBinaryString() 사용
  • 두 개의 지도를 주어진 조건에 맞게 합쳐야하므로 OR 연산을 실행한다 -> arr1[i] | arr2[i]
  • 그런데 2진수로 바꾸면서  1이 나오기 전의 0들은 사라져버리기 때문에 String.format을 사용해서 사라진 0들을 살려줘야한다
  • ⭐️map[i] = String.format("%" + n + "s", map[i]); -> n의 크기만큼 고정된 문자열(%'n's)에 map[i]의 값을 넣는다는 뜻이다
  • 예를들어 String.format("%6s", 1)의 결과는 "(5개의 공백)1"이 된다 
  • 그 이후 replace() 함수로 0은 공백으로, 1은 #으로 바꿔주면 기존 공백은 유지되고 해당 숫자들은 기호로 바뀌게 된다

코드

class Solution {
  public String[] solution(int n, int[] arr1, int[] arr2) {
      String[] answer = {};
      String[] map = new String[n];
      
      for(int i = 0 ; i < n ; i++) {
      	map[i] = Integer.toBinaryString(arr1[i] | arr2[i]);
      }
      
      for (int i=0; i<n; i++) {
      	map[i] = String.format("%"+n+"s", map[i]);
        map[i] = map[i].replace("1", "#");
        map[i] = map[i].replace("0", " ");
      }
     
      for(int i=0; i<n; i++) {
      	System.out.println(map[i]);
      }
	  
      answer = map;
      return answer;
  }
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
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
글 보관함