본문 바로가기
스터디(programmers)

Java] 프로그래머스 lv.1, [1차] 비밀지도

by 김마리님 2023. 3. 8.

https://school.programmers.co.kr/learn/courses/30/lessons/17681?language=java 

 

프로그래머스

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

programmers.co.kr

 

 

풀이

더보기

이번 문제도 혀가 긴 문제임. 근데 좀 많이 긴.

ㅋㅋㅇ블라인드 테스트 전에도 해봤지만 진짜 혀가 많이 깁니다.. 

 

그냥 결국 두 문자를 이진법으로 변환해서 -> 값을 비교해서 하나씩 문자열로 변경하면 되는 문제임...

 

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];

        for (int i = 0; i < arr1.length; i++) {
            String binaryString1 = Integer.toBinaryString(arr1[i]);
            String binaryString2 = Integer.toBinaryString(arr2[i]);

            String mapPasswordString1 = "0".repeat(n - binaryString1.length()) + binaryString1;
            String mapPasswordString2 = "0".repeat(n - binaryString2.length()) + binaryString2;

            String[] splitPassword1 = mapPasswordString1.split("");
            String[] splitPassword2 = mapPasswordString2.split("");

            for (int j = 0; j < splitPassword1.length; j++) {
                if (!(splitPassword1[j].equals(splitPassword2[j]) && splitPassword1[j].equals("0"))) {
                    splitPassword1[j] = "#";
                } else {
                    splitPassword1[j] = " ";
                }
            }

            String arrayToString = String.join("", splitPassword1);
            answer[i] = arrayToString;

        }

        return answer;
    }
}

 

 

 

 

++) 함수에 바이너리라고 떡하니 적혀있는데도 이 값을 바이너리하지 않게 처리해버림. 통과는 됐는데 아쉬움.

남들 풀이 보니까 그냥

            result[i] = Integer.toBinaryString(arr1[i] | arr2[i]);

 그냥 이렇게 바이너리값 비교해서 or이니까, 0을 false, 1을 true로 인식해서 알아서 둘 중 하나라도 1이 있으면 반드시 1을 리턴하게 되니 0만 남게 되더라. 여기서 바로 리플레이스 해서 리턴하던데, 그냥 이건 내가 실무에 찌들어서 바이너리한 값을 생각하지 못한 내 잘못.. ^-ㅠ 알고리즘 공부가 부족하다.

 

반응형