[Programmers] [1차] 비밀지도 - 2018 KAKAO BLIND RECRUITMENT

동민·2021년 3월 10일
// [1차] 비밀지도 - 2018 KAKAO BLIND RECRUITMENT
public class SecretMap {

	public String[] solution(int n, int[] arr1, int[] arr2) {
		String[] answer = new String[n];

		for (int i = 0; i < n; i++) {
			answer[i] = Integer.toBinaryString(arr1[i] | arr2[i]); // Integer.toBinaryString() : int형 정수를 2진수 String으로 변환. arr1[i] | arr2[i] : 비트연산 - 이 문제에서는 비트연산 활용이 중요함
			answer[i] = String.format("%" + n + "s", answer[i]); // 맨앞에 공백이 있을 시 길이를 맞추어 준다. n이 5일 때 String.format("%5s", answer[i]); 가 됨
			answer[i] = answer[i].replace("0", " "); // replace 함수로 배열 원소에 포함된 '0'을 공백으로 모두 치환
			answer[i] = answer[i].replace("1", "#"); // replace 함수로 배열 원소에 포함된 '1'을 '#'으로 모두 치환
		}
		return answer;
	}

	public static void main(String[] args) {

		SecretMap s = new SecretMap();

		int arr1[] = { 9, 20, 28, 18, 11 };
		int arr2[] = { 30, 1, 21, 17, 28 };

		int arr3[] = { 46, 33, 33, 22, 31, 50 };
		int arr4[] = { 27, 56, 19, 14, 14, 10 };

		int arr5[] = { 0, 0, 0 };
		int arr6[] = { 0, 7, 5 };

		s.solution(5, arr1, arr2); // "#####","# # #", "### #", "# ##", "#####"
		s.solution(6, arr3, arr4); // "######", "### #", "## ##", " #### ", " #####", "### # "
		s.solution(3, arr5, arr6);

	}
}
arr1[i] | arr2[i] : 비트연산 - 이 문제에서는 비트연산 활용이 중요함.
| : (or 비트연산) , & : (and 비트연산)
Integer.toBinaryString() : int형 정수를 2진수 String으로 변환.
String.format("%" + n + "s", [문자열]); : [문자열]을 n길이로 맞춰준다. ex) String.format("%7s","hello"); -> " hello"
answer[index] = answer[index].replace(oldChar, newChar); : answer 배열 원소에 포함된 oldChar를 newChar로 모두 치환한다.
profile
BE Developer

0개의 댓글