๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/๐Ÿต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(Java)

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Java] [1์ฐจ]๋น„๋ฐ€์ง€๋„

by carrot0911 2025. 7. 18.

๋ฌธ์ œ ์„ค๋ช…

https://school.programmers.co.kr/learn/courses/30/lessons/17681

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

๋„ค์˜ค๋Š” ํ‰์†Œ ํ”„๋กœ๋„๊ฐ€ ๋น„์ƒ๊ธˆ์„ ์ˆจ๊ฒจ๋†“๋Š” ์žฅ์†Œ๋ฅผ ์•Œ๋ ค์ค„ ๋น„๋ฐ€์ง€๋„๋ฅผ ์†์— ๋„ฃ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋น„๋ฐ€์ง€๋„๋Š” ์ˆซ์ž๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์–ด ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•ด์•ผ ํ•œ๋‹ค. ๋‹คํ–‰ํžˆ ์ง€๋„ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•  ๋ฐฉ๋ฒ•์„ ์ ์–ด๋†“์€ ๋ฉ”๋ชจ๋„ ํ•จ๊ป˜ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

  1. ์ง€๋„๋Š” ํ•œ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ n์ธ ์ •์‚ฌ๊ฐํ˜• ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ, ๊ฐ ์นธ์€ "๊ณต๋ฐฑ"(" ") ๋˜๋Š” "๋ฒฝ"("#") ๋‘ ์ข…๋ฅ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  2. ์ „์ฒด ์ง€๋„๋Š” ๋‘ ์žฅ์˜ ์ง€๋„๋ฅผ ๊ฒน์ณ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ "์ง€๋„ 1"๊ณผ "์ง€๋„ 2"๋ผ๊ณ  ํ•˜์ž. ์ง€๋„ 1 ๋˜๋Š” ์ง€๋„ 2 ์ค‘ ์–ด๋А ํ•˜๋‚˜๋ผ๋„ ๋ฒฝ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๋ฒฝ์ด๋‹ค. ์ง€๋„ 1๊ณผ ์ง€๋„ 2์—์„œ ๋ชจ๋‘ ๊ณต๋ฐฑ์ธ ๋ถ€๋ถ„์€ ์ „์ฒด ์ง€๋„์—์„œ๋„ ๊ณต๋ฐฑ์ด๋‹ค.
  3. "์ง€๋„ 1"๊ณผ "์ง€๋„ 2"๋Š” ๊ฐ๊ฐ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ๋‹ค.
  4. ์•”ํ˜ธํ™”๋œ ๋ฐฐ์—ด์€ ์ง€๋„์˜ ๊ฐ ๊ฐ€๋กœ์ค„์—์„œ ๋ฒฝ ๋ถ€๋ถ„์„ 1, ๊ณต๋ฐฑ ๋ถ€๋ถ„์„ 0์œผ๋กœ ๋ถ€ํ˜ธํ™”ํ–ˆ์„ ๋•Œ ์–ป์–ด์ง€๋Š” ์ด์ง„์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์˜ ๋ฐฐ์—ด์ด๋‹ค.

๋„ค์˜ค๊ฐ€ ํ”„๋กœ๋„์˜ ๋น„์ƒ๊ธˆ์„ ์†์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก, ๋น„๋ฐ€์ง€๋„์˜ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•˜๋Š” ์ž‘์—…์„ ๋„์™€์ค„ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ.

์ž…๋ ฅ ํ˜•์‹

์ž…๋ ฅ์œผ๋กœ ์ง€๋„์˜ ํ•œ ๋ณ€ ํฌ๊ธฐ n๊ณผ 2๊ฐœ์˜ ์ •์ˆ˜ ๋ฐฐ์—ด arr1, arr2๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.

  • 1 โ‰ฆ n โ‰ฆ 16
  • arr1, arr2๋Š” ๊ธธ์ด n์ธ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง„๋‹ค.
  • ์ •์ˆ˜ ๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ x๋ฅผ ์ด์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ์˜ ๊ธธ์ด๋Š” n ์ดํ•˜์ด๋‹ค. ์ฆ‰, 0 โ‰ฆ x โ‰ฆ 2n - 1์„ ๋งŒ์กฑํ•œ๋‹ค.

์ถœ๋ ฅ ํ˜•์‹

์›๋ž˜์˜ ๋น„๋ฐ€์ง€๋„๋ฅผ ํ•ด๋…ํ•˜์—ฌ '#'๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ์ถœ๋ ฅํ•˜๋ผ.

์ž…์ถœ๋ ฅ ์˜ˆ์ œ

๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’
n 5
arr1 [9, 20, 28, 18, 11]
arr2 [30, 1, 21, 17, 28]
์ถœ๋ ฅ ["#####", "# # #", "### #", "#  ##", "#####"]
๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’
n 6
arr1 [46, 33, 33, 22, 31, 50]
arr2 [27, 56, 19, 14, 14, 10]
์ถœ๋ ฅ ["######", "###  #", " #### ", " ####", "### # "]

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

class Solution {
    public String[] solution(int n, int[] arr1, int[] arr2) {
        String[] answer = new String[n];  // ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ๋ฌธ์ž์—ด ๋ฐฐ์—ด ์ƒ์„ฑ

        for (int i = 0; i < n; i++){  // ์ง€๋„ ํฌ๊ธฐ๋งŒํผ ๋ฐ˜๋ณต๋ฌธ ์‹คํ–‰
            String binaryString = Integer.toBinaryString(arr1[i] | arr2[i]);  // arr1๊ณผ arr2์˜ ๊ฐ ์š”์†Œ๋ฅผ OR ์—ฐ์‚ฐํ•˜์—ฌ ์ด์ง„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
            answer[i] = transform(binaryString, n);  // ์ด์ง„ ๋ฌธ์ž์—ด์„ ์›ํ•˜๋Š” ์ง€๋„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
        }

        return answer;  // ์ •๋‹ต ๋ฐ˜ํ™˜
    }

	// ์ด์ง„ ๋ฌธ์ž์—ด์„ ์ง€๋„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
    private String transform(String binaryString, int n){
        String result = " ".repeat(n - binaryString.length()) + binaryString;  // ์ง€๋„๋Š” n์ž๋ฆฌ์—ฌ์•ผ ํ•˜๋ฏ€๋กœ, ๊ธธ์ด๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ์•ž์— ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€
        
        // '1'์€ ๋ฒฝ(#)์œผ๋กœ, '0'์€ ๊ณต๋ฐฑ( )์œผ๋กœ ์น˜ํ™˜
        result = result.replaceAll("1", "#");
        result = result.replaceAll("0", " ");

        return result;  // ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
    }
}

๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ์ƒ๊ฐํ•œ ๋ฐฉํ–ฅ

์ด ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ๋จผ์ € ๋‘ ๊ฐœ์˜ ์ •์ˆ˜ ๋ฐฐ์—ด arr1, arr2๋ฅผ ๋น„ํŠธ ๋‹จ์œ„๋กœ OR ์—ฐ์‚ฐํ•˜์—ฌ ๊ฒน์ณ์ง„ ์ง€๋„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ–ˆ๋‹ค. ๊ฐ ์ง€๋„๋Š” ์ด์ง„์ˆ˜๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ๋ฒฝ์ด ์žˆ๋Š” ๋ถ€๋ถ„์€ 1, ์—†๋Š” ๋ถ€๋ถ„์€ 0์œผ๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค. ๋‘ ์ง€๋„๋ฅผ ๊ฒน์ณ ํ•˜๋‚˜๋ผ๋„ ๋ฒฝ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์œ„์น˜๋Š” ์ตœ์ข… ์ง€๋„์—์„œ ๋ฒฝ์œผ๋กœ ํ‘œ์‹œํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ ์œ„์น˜๋ฅผ OR ์—ฐ์‚ฐ(|)์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.

OR ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฅผ Integer.toBinaryString()์„ ์‚ฌ์šฉํ•ด ์ด์ง„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ–ˆ๋‹ค. ์ด๋•Œ, ๋ณ€ํ™˜๋œ ์ด์ง„ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ ์ง€๋„์˜ ํฌ๊ธฐ n๋ณด๋‹ค ์งง์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์•ž์ชฝ์— " ".repeat(n - binaryString.length())๋ฅผ ์‚ฌ์šฉํ•ด ๊ธธ์ด๋ฅผ ๋งž์ถฐ์ฃผ์—ˆ๋‹ค. ๊ทธ ํ›„ replaceAll() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ด์ง„ ๋ฌธ์ž์—ด์˜ 1์€ ๋ฒฝ(#)์œผ๋กœ, 0์€ ๊ณต๋ฐฑ( )์œผ๋กœ ๋ฐ”๊ฟ”์คŒ์œผ๋กœ์จ ์‚ฌ๋žŒ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์˜ ์ง€๋„๋กœ ๋ณ€ํ™˜ํ–ˆ๋‹ค.

์ด์ง„ ๋ฌธ์ž์—ด์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง์€ ๋ณ„๋„์˜ transform ๋ฉ”์„œ๋“œ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์˜€๊ณ , ๊ฐ ๋‹จ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ๋‚˜๋ˆ„์–ด ๋ฌธ์ œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์‹คํžˆ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐ ํ–‰๋งˆ๋‹ค ์™„์„ฑ๋œ ๋ฌธ์ž์—ด์„ answer ๋ฐฐ์—ด์— ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค.