728x90

문제

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

 

코딩테스트 연습 - [1차] 비밀지도

비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다

programmers.co.kr

(문제 설명이 길어 링크로 대체)

 

 

 

풀이

  • 먼저 arr1, arr2의 수를 이진수의 문자열로 만든다. (getBinary 함수 만들어서 활용하였음)
  • 문자열의 길이가 n이 안되면 앞부분을 0으로 채워 넣는다. (getBinary 함수 후반부)
  • 배열 arr1, arr2 각각을 이진수 문자열로 바꿔 String 2차원 배열에 문자 하나씩 나눠 넣는다. 
  • 한 줄씩 비교해서 "#" 혹은 " " 을 넣는다.

 

 


다른 사람들의 풀이를 보면 두 가지 인상적인 방법이 있었다.

 

첫 번째 방법은 Integer 클래스의 toBinaryString 함수를 활용하였다.

생소한 함수인데 아마 이진수 문자열로 만들어주는 함수인 듯 하다. 특히 (arr1[i] | arr2[i]) 수식을 통해 둘 중 하나가 1이라면 1을 반환하는 것을 구현하였다. 전체적으로 깔끔한 코드이지만 속도는 내가 쓴 코드에 비해 약간 더 오래걸린다. 

 

 

 

두 번째 방법은 재귀함수를 이용하는 방법이다. arr[i] | arr2[i] 를 통해 이진수의 OR 연산을 해놓고 이진법 변환을 하는 것 같은데 속도가 가장 빨랐다. 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기