공부블로그
[프로그래머스] 1차 비밀지도 본문
https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드 설명
- arr1[ ] , arr2[ ]은 각각 지도를 의미하고 이 두개를 합쳐 전체지도가 된다.
문제의 규칙을 보면 전체 지도에서 벽과 공백은 OR개념
- 배열 arr1[], arr2[]의 인덱스를 가리키기 위해 변수 i를 0 ~ n-1으로 설정해 for문을 작성한다.
- i의 값이 변경될 때 마다 sb를 초기화한다.
- 각 요소값을 2로 나눠 나머지를 비교한다.
이때 몫이 0이 되더라도 이진수로 변경했을 때 길이가 n이 되야하므로 j의 범위를 1 ~ n으로 설정한다.
나머지가 모두 0일경우 sb에 0을 넣고, 둘 중 하나라도 1이면 1을 대입한다.
- sb에 이진수의 값이 거꾸로 저장됨 따라서 reverse()를 통해 뒤집어 String[]에 저장한다.
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
StringBuilder sb =new StringBuilder(5);
for(int i=0; i<n; i++){
sb.delete(0,n);
for(int j=1; j<=n; j++){
if(arr1[i]%2 + arr2[i]%2 == 0){
sb.append(" ");
}else sb.append("#");
arr1[i] /= 2;
arr2[i] /= 2;
}
answer[i] = sb.reverse().toString();
}
return answer;
}
}
'IT > 알고리즘' 카테고리의 다른 글
[프로그래머스] 신규 아이디 추천 (0) | 2022.07.15 |
---|---|
[프로그래머스] 숫자 문자열과 영단어 (0) | 2022.07.08 |
[프로그래머스] 신고결과 받기 (0) | 2022.06.18 |
[프로그래머스] 로또의 최고 순위와 최저 순위 (0) | 2022.06.15 |
[프로그래머스] 크레인 인형뽑기 (0) | 2022.06.15 |
Comments