-
[프로그래머스] 비밀지도 이진법코딩테스트 2025. 4. 6. 23:33반응형
https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
지도는 정사각형이고 한변의 길이는 n이다.
arr1과 arr2는 정수로 이루어진 배열이며, 각 정수를 이진수로 바꾸면 지도의 정보가 된다.
각 배열의 값을 이진수로 바꾸면, 1 = 벽, 0 = 빈 칸을 의미한다.
두 배열을 해독하면 지도1 지도2가 나타나며, 두 지도를 겹쳤을 때의 형태를 벽 '#' 과 빈칸 ' '로 구하여라.
접근
일전에 삼진수로 변환하던 문제와 유사할 것이므로
1. 우선 이진수로 변환할 역할의 메서드를 별도로 생성한다.
2. n = arr1 arr2의 길이와 같으므로 0 ~ n 만큼 순회하여
각 배열 값을 이진수화 하고 변환값을 순회하며 해석한다.
public String[] solution(int n, int[] arr1, int[] arr2) { String[] answer = {}; String[] converted1 = new String[arr1.length]; String[] converted2 = new String[arr2.length]; List<String> list = new ArrayList<>(); //arr to binary for(int i = 0; i < n; i++){ String c1 = convertToBinary(arr1[i], n); String c2 = convertToBinary(arr2[i], n); converted1[i] = c1; converted2[i] = c2; StringBuilder data = new StringBuilder(); for(int j = 0; j < n; j++){ if(c1.charAt(j) == '1' || c2.charAt(j) == '1'){ data.append('#'); } else if(c1.charAt(j) == '0' || c2.charAt(j) == '0'){ data.append(' '); } } list.add(data.toString()); } answer = list.toArray(String[]::new); return answer; } public String convertToBinary(int n, int len){ StringBuilder result = new StringBuilder(); while(n > 0 || result.length() < len){ int remain = n % 2; result.insert(0, remain); n /= 2; } return result.toString(); }
반응형'코딩테스트' 카테고리의 다른 글
[프로그래머스] 이상한 문자 만들기 자바 toUpper / toLowerCase (0) 2025.04.07 [프로그래머스] 최대공약수와 최소공배수 자바 유클리드 호제법 (1) 2025.04.07 [프로그래머스] 다트게임 자바 리스트수정 합계 (0) 2025.04.06 [프로그래머스] 완주하지 못한 선수 자바 해시 맵 활용 (0) 2025.04.06 [프로그래머스] k번째 수 자바 정렬 (0) 2025.04.06