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 연산을 해놓고 이진법 변환을 하는 것 같은데 속도가 가장 빨랐다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - JAVA]연습문제 - Level 2 가장 큰 정사각형 찾기 (1) | 2020.11.16 |
---|---|
[프로그래머스 - JAVA]2018 KAKAO BLIND RECRUITMENT - Level 1 다트 게임 (0) | 2020.11.16 |
[프로그래머스 - JAVA]2020 카카오 인턴십 - Level 1 키패드 누르기 (0) | 2020.11.12 |
[프로그래머스 - JAVA]2019 카카오 개발자 겨울 인턴십 - Level 1 크레인 인형뽑기 게임 (0) | 2020.11.12 |
[프로그래머스 - JAVA]Summer/Winter Coding - Level 1 예산 (0) | 2020.11.10 |
최근댓글