공부해 codingTest

프로그래머스 JAVA Level 1. [1차] 비밀지도

러쉬허쉬 2023. 1. 30. 01:01

Level 1. [1차] 비밀지도

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 통과

 

2. 통과 코드

 

3. 풀이

(1) Integer.toString(숫자, 진수)를 사용해서 arr1과 arr2의 원소들을 2진수로 바꾼다.

(2) 2진수로 바꾼 숫자의 길이가 n보다 작으면, 길이가 n이 될때까지 앞에 0을 추가로 붙인다.

     0을 붙이기 쉽도록 String.valueOf(숫자)를 사용해 숫자를 문자열로 바꾼다.

(3) arr1의 첫번째 원소가 9, arr2의 첫번째 원소가 30이고, n이 5라면,

     String wall1 = "01001", String wall2 = "11110"이 된다.

 

(4) 위의 과정을 거쳐 n과 길이가 같아진 2진수 형태를 한 문자열을 split("")으로 1자씩 쪼갠다.

     String[] temp1 = {"0", "1", "0", "0", "1"};, String[] temp2 = {"1", "1", "1", "1", "0"};이 된다.

(5) temp1, temp2의 원소들을 순서대로 비교한다.

     하나라도 1이라면 "#"이고, 둘다 0이면 " "이다.

(6) StringBuilder sb에 "#" 또는 " "을 추가한다.

(7) 반환할 answer[]의 인덱스에 sb를 넣고, sb를 초기화한다.

 

(8) 반복문을 통해 answer[]의 모든 인덱스에 각각 값이 들어가면 반환한다.