본문 바로가기

이론/문제풀이

[KaKao 신입공채 1차 코딩테스트] 비밀 지도(난이도: 하) - java

상반기 공채까지 노리면서 조금 더 역량을 쌓기로 했으나,,

그래도 하반기 다가오니 마음이 급해지는건 어쩔 수 없는 것 같다.


이런저런 코딩테스트 풀고 있는데, 이번엔 카카오 신입공채 1차 테스트!


이 문제는 난이도:하 이다. 

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

링크를 참고하도록 한다.



if/else 문을 써서 노가다를 해도 문제 없을 문제.

최종 지도를 만들고, 자리수가 모자라면 앞에 0을 추가해주는 케이스만 잘 체크해주면 문제 없을 것 같다.


나는 비트연산자를 활용했다.
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
    	Scanner scan=new Scanner(System.in);
    	int n=6;
    	int[] arr1= {46,33,33,22,31,50};
    	int[] arr2= {27,56,19,14,14,10};
    	
    	int[] arr3=new int[n];
    	String[] result=new String[n];
    	for(int i=0; i<n; i++) {
    		arr3[i]=arr1[i]|arr2[i];
    		String binary=Integer.toBinaryString(arr3[i]);
    		if(binary.length()<n) {
    			binary=String.format("%0"+n+"d", Integer.parseInt(binary));
    		}
    	
    		binary=binary.replaceAll("1", "#");
    		binary=binary.replaceAll("0", " ");
    		result[i]=binary;
    	
    	}
    	for(int i=0; i<n; i++) {
    		System.out.println(result[i]);
    	}
    }

 
}


String.format 을 이용하면 쉽게 삽입할 수 있다.

"%05d" 이면 다섯자리수로 맞춘다는 뜻이다. 


비트 연산자, String.format/ String.replace 등을 써봤으면 아주 쉬운 문제일텐데

같은 문제가 또 나오지는 않겠징..