https://school.programmers.co.kr/learn/courses/30/lessons/17681 (๋ฌธ์ ํด์ค)
๐ ํ์ด 2 : ๋นํธ OR ์ฐ์ฐ(|) + replaceAll()
`x | y` : ์ ์ x์ y๋ฅผ ๋นํธ ๋จ์๋ก `OR` ์ฐ์ฐโญ
- ex. `Integer.toBinaryString(9 | 7)` > `1001 | 0111` > `1111`
`String.format` : ๋ฏธ๋ฆฌ ์ ์๋ ํ์์ ๋ง์ถฐ ๋ฌธ์์ด ์์ฑ
- ex. `String.format("%04d", 42) = "0042"`, `String.format("%4s", "42") = " 42"`
class Solution {
// ์ง๋์ ํ ๋ณ ํฌ๊ธฐ n ๊ณผ ์ง๋ 1 ๋ฐฐ์ด, ์ง๋ 2 ๋ฐฐ์ด์ด ์ฃผ์ด์ง ๋, ์ ์ฒด์ง๋๋ฅผ ํด๋
ํ์ฌ '#', ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด ๋ฐฐ์ด๋ก ์ถ๋ ฅ
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i = 0; i < n; i++) { // nํ
// ๋ ์ง๋ ๋ฐฐ์ด์ OR ์ฐ์ฐํ์ฌ ๋ฒฝ์ด ์๋ ๋ถ๋ถ์ ์ฐพ๊ณ , ์ด๋ฅผ ์ด์ง ๋ฌธ์์ด๋ก ๋ณํ
answer[i] = Integer.toBinaryString(arr1[i] | arr2[i]); // ๋นํธ๋จ์ OR ์ฐ์ฐ
// ์ด์ง ๋ฌธ์์ด์ ์ง๋ ํํ๋ก ๋ณํ
answer[i] = String.format("%" + n + "s", answer[i]); // ์ด์ง ๋ฌธ์์ด์ n์๋ฆฌ๋ก ๋ง์ถ๊ณ ๋น ์๋ฆฌ๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ์ฑ์
answer[i] = answer[i].replaceAll("1", "#").replaceAll("0", " "); // 1 -> ๋ฒฝ('#'), 0 -> ๊ณต๋ฐฑ(' ')
}
return answer;
}
}
๐ ํ์ด 1 : ๊ฐ๊ฐ ์ด์ง ๋ฌธ์์ด๋ก ๋ณํ ํ ๋ฐ๋ณต๋ฌธ์์ ๋น๊ต
import java.util.Arrays;
class Solution {
// ์ง๋์ ํ ๋ณ ํฌ๊ธฐ n ๊ณผ ์ง๋ 1 ๋ฐฐ์ด, ์ง๋ 2 ๋ฐฐ์ด์ด ์ฃผ์ด์ง ๋, ์ ์ฒด์ง๋๋ฅผ ํด๋
ํ์ฌ '#', ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฌธ์์ด ๋ฐฐ์ด๋ก ์ถ๋ ฅ
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n];
for (int i = 0; i < n; i++) { // nํ
long x1 = arr1[i]; // ex.9
String formattedStr1 = String.format("%0" + n + "d", Long.parseLong(Long.toBinaryString(x1))); // ex. 01001
long x2 = arr2[i];
String formattedStr2 = String.format("%0" + n + "d", Long.parseLong(Long.toBinaryString(x2)));
StringBuilder sb = new StringBuilder();
for (int j = 0; j < n; j++) { // n์ด
int num = (formattedStr1.charAt(j) - '0') + (formattedStr2.charAt(j) - '0');
sb.append(num > 0 ? "#" : " "); // ์ด๋ ํ๋๋ผ๋ ๋ฒฝ -> ์ ์ฒด ์ง๋์์ ๋ฒฝ
}
answer[i] = sb.toString();
}
return answer;
}
}