티스토리 뷰

1. 문제

https://programmers.co.kr/learn/courses/30/lessons/17681

 

프로그래머스

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

programmers.co.kr

2. 설명

10진수로 입력받은 arr1과 arr2를 2진수로 변환하고,

앞 공백을 채워서,

1은 "#"으로, 0은 " "로 변환하면 된다.

 

3. 코드

class Solution {
  public String[] solution(int n, int[] arr1, int[] arr2) {
      String[] answer = new String[n];
          
      for(int i=0; i<n; i++) {
          String map = Integer.toBinaryString(arr1[i]|arr2[i]); // 2진수 변환
          map = String.format("%"+n+"s", map); // 앞 공백 채우기
          map = map.replaceAll("1","#");
          map = map.replaceAll("0"," ");
          answer[i] = map;
      }
      
      return answer;
  }
}

 

근데 format하는 부분에서

map = String.format("%0"+n+"d",Integer.parseInt(map));

하면 테스트케이스 2와 6이 실패로 뜬다.

왜그런지 모르겠다 ㅠ 지나가다가 아시면 가르켜주세요.

 

+잘못된(?) 코드

class Solution {
  public String[] solution(int n, int[] arr1, int[] arr2) {
      String[] answer = new String[n];
          
      for(int i=0; i<n; i++) {
          String map = Integer.toBinaryString(arr1[i]|arr2[i]);
          map = String.format("%0"+n+"d", Integer.parseInt(map)); // 이 부분입니다.
          map = map.replaceAll("1","#");
          map = map.replaceAll("0"," ");
          answer[i] = map;
      }
      
      return answer;
  }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday