# 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/17681
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
목차
카카오 문제 해설 2018 카카오 신입 공채 1차 코딩 테스트 문제 해설 링크
이 문제는 비트 연산Bitwise Operation을 묻는 문제입니다.
이미 문제 예시에 2진수로 처리하는 힌트가 포함되어 있고, 둘 중 하나가 1일 경우에 벽 #이 생기기 때문에 OR로 처리하면 간단히 풀 수 있습니다.
아주 쉬운 문제였던 만큼 if else로 풀이한 분들도 많이 발견되었는데요.
정답으로는 간주되지만 이 문제는 비트 연산을 잘 다룰 수 있는지를 묻고자 하는 의도였던 만큼
앞으로 이런 유형의 문제를 풀 때는 비트 연산을 꼭 기억하시기 바랍니다.
이 문제의 정답률은 81.78%입니다. 첫 번째 문제이고 가장 쉬운 문제였던 만큼 많은 분들이 잘 풀어주셨습니다.
내 문제풀이
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i=0; i<n; i++) {
StringBuilder sb = new StringBuilder(Integer.toBinaryString(arr1[i] | arr2[i]));
while (sb.length() < n) {
sb.insert(0, " ");
}
answer[i] = sb.toString().replace("0", " ").replace("1", "#");
}
return answer;
}
}
왼쪽을 빈 칸으로 채우기 위한 방법으로는 내가 한 방식(n 길이만크 반복해서 앞에 " " 추가)과 더불어 아래 두 방식도 있다.
속도는
(반복문 돌면서 " " 추가) < (String.format("%16s",~) 한 후 substring()) <<<< (String.format("%" + n + "s",~))
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i=0; i<n; i++) {
String temp = String.format("%16s", Integer.toBinaryString(arr1[i] | arr2[i]));
temp = temp.substring(temp.length() - n);
answer[i] = temp.replace("0", " ").replace("1", "#");
}
return answer;
}
}
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i=0; i<n; i++) {
String temp = String.format("%" + n + "s", Integer.toBinaryString(arr1[i] | arr2[i]));
answer[i] = temp.replace("0", " ").replace("1", "#");
}
return answer;
}
}
'알고리즘 문제풀이 > 프로그래머스 Level 1' 카테고리의 다른 글
[2023 KAKAO BLIND RECRUITMENT/Java] 개인정보 수집 유효기간 ★ (0) | 2023.07.24 |
---|---|
[2022 KAKAO TECH INTERNSHIP/Java] 성격 유형 검사하기 (0) | 2023.07.23 |
[2020 카카오 인턴십/Java] 키패드 누르기 (0) | 2023.07.21 |
[2019 KAKAO BLIND RECRUITMENT/Java] 실패율 (0) | 2023.07.20 |
[2021 KAKAO BLIND RECRUITMENT/Java] 신규 아이디 추천 (0) | 2023.07.20 |