

간단한 문제다!
사실상 10진수을 2진수으로 바꾸는 것이 핵심인 문제라고 생각되어진다!
필자는 가독성이 좋은 코드를 좋아하고 책 읽듯(?) 해석하고 코딩하기 때문에 요구 사항을 그래도 코드로 작성해보았다.

실제로 10진수를 2진수로 바꿀 때 계속 2로 나누어 나머지가 생기면 1로 적용하고 나머지가 없다면 0으로 적용하는 변환법을 사용하였다.
문제에서는 1인 경우 벽(#)이고 0인 경우는 공백( )이기 때문에 해당 내용으로 채워주었다.
위의 지도1의 예시처럼 9인 경우 2진법으로 1001으로 길이가 4인데 실제 벽은 5칸이므로 왼쪽에 공백으로 길이를 맞춰주어야한다.(물론 안맞추고 풀 수 있지만 맞춰주는 것이 편해서 맞춰주었다.) 그래서 while문을 통해 길이가 짧은 경우 길이를 맞춰주었다.

2진수로 변환하는 함수를 구현하였다면 솔루션 함수는 더욱 간단하다. 그저 지도1과 지도2를 2진수로 변환하고나서 우리가 아는 or연산을 구현해주면된다. 즉, 지도1과 2 중 하나라도 #이면 #으로 처리해주면 된다.
어려울 것 없는 간단한 문제였다.
그러나 풀고서 확인했는데 자바의 Integer에 2진수로 변환하는 내장 함수가 있었다... ㅠㅠㅠㅠ
String binary = Integer.toBinaryString(9); // 2진수 변환
String octalString = Integer.toOctalString(9); // 8진수 변환
String hexString = Integer.toHexString(9); // 16진수 변환
댓글