๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

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

by ์ฃผ๋ฐœ2 2020. 2. 9.
๋ฐ˜์‘ํ˜•

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

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - [1์ฐจ] ๋น„๋ฐ€์ง€๋„ | ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

๋น„๋ฐ€์ง€๋„ ๋„ค์˜ค๋Š” ํ‰์†Œ ํ”„๋กœ๋„๊ฐ€ ๋น„์ƒ๊ธˆ์„ ์ˆจ๊ฒจ๋†“๋Š” ์žฅ์†Œ๋ฅผ ์•Œ๋ ค์ค„ ๋น„๋ฐ€์ง€๋„๋ฅผ ์†์— ๋„ฃ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ๋น„๋ฐ€์ง€๋„๋Š” ์ˆซ์ž๋กœ ์•”ํ˜ธํ™”๋˜์–ด ์žˆ์–ด ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•ด์•ผ ํ•œ๋‹ค. ๋‹คํ–‰ํžˆ ์ง€๋„ ์•”ํ˜ธ๋ฅผ ํ•ด๋…ํ•  ๋ฐฉ๋ฒ•์„ ์ ์–ด๋†“์€ ๋ฉ”๋ชจ๋„ ํ•จ๊ป˜ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ์ง€๋„๋Š” ํ•œ ๋ณ€์˜ ๊ธธ์ด๊ฐ€ n์ธ ์ •์‚ฌ๊ฐํ˜• ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ, ๊ฐ ์นธ์€ ๊ณต๋ฐฑ(" ) ๋˜๋Š”๋ฒฝ(#") ๋‘ ์ข…๋ฅ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. ์ „์ฒด ์ง€๋„๋Š” ๋‘ ์žฅ์˜ ์ง€๋„๋ฅผ ๊ฒน์ณ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ๊ฐ ์ง€๋„ 1๊ณผ ์ง€๋„ 2๋ผ๊ณ  ํ•˜์ž. ์ง€๋„ 1

programmers.co.kr

ํ‹€๋ฆฐ ์ฝ”๋“œ

import java.util.Arrays;

class Solution {
  public String[] solution(int n, int[] arr1, int[] arr2) {
      String[] answer = new String[n];
      
      for(int i=0; i<n; i++){
          // 10์ง„์ˆ˜ -> 2์ง„์ˆ˜(์ ค ์•ž 0๋„ ์ถœ๋ ฅ)
          String str1 = String.format("%0" + n + "d", Integer.parseInt(Integer.toBinaryString(arr1[i]).toString()));
	  String str2 = String.format("%0" + n + "d", Integer.parseInt(Integer.toBinaryString(arr2[i]).toString()));
          String result = "";
          
          for(int j=0; j<str1.length(); j++){
              // ๋‘ ์ง€๋„ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ฒฝ(1) ์ด๋ฉด ์ „์ฒด ์ง€๋„์—์„œ๋„ ๋ฒฝ
              if(str1.charAt(j) == '1' || str2.charAt(j) == '1')
                  result += "#";
              else
                  result += " ";
              }
          answer[i] = result;
      }

      return answer;
  }
}

ํ’€์ด

์ง€๋„์˜ ํ•œ ๋ณ€ ํฌ๊ธฐ(n)๋งŒํผ ์ฃผ์–ด์ง„ ์ •์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

n = 5์ผ๋•Œ

9 => 01001

1 => 00001

 

๊ทธ ํ›„ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ๋ฌธ์ž์—ด์ค‘, ์–ด๋Š ํ•˜๋‚˜๋ผ๋„ ๋ฒฝ์ด๋ฉด => "#"

๋‘˜ ๋‹ค 0์ผ๊ฒฝ์šฐ => " "(๊ณต๋ฐฑ)

์œผ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋ฐฐ์—ด์— ๋‹ด์•„์„œ ๋ฆฌํ„ดํ•œ๋‹ค.

 

ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์—์„œ ํ‹€๋ ธ๋Š”๋ฐ ... ์™œํ‹€๋ฆฐ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค ....

์•„๋งˆ ์ง„์ˆ˜ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ํ‹€๋ฆฐ ๊ฒƒ ๊ฐ™์€๋ฐ... 

          // 10์ง„์ˆ˜ -> 2์ง„์ˆ˜(์ ค ์•ž 0๋„ ์ถœ๋ ฅ)
          String str1 = String.format("%0" + n + "d", Integer.parseInt(Integer.toBinaryString(arr1[i]).toString()));
	  String str2 = String.format("%0" + n + "d", Integer.parseInt(Integer.toBinaryString(arr2[i]).toString()));

 

์œ„์™€ ๊ฐ™์€ ๋ณ€ํ™˜๋Œ€์‹  ์ •์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, ์ง€๋„์˜ ํฌ๊ธฐ(n)๊ณผ ๋น„๊ตํ•˜๋ฉฐ

0์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€์—ˆ๋”๋‹ˆ ์ •๋‹ต ..

 

 

์ตœ์ข… ์ฝ”๋“œ

import java.util.Arrays; 
class Solution { 
	public String[] solution(int n, int[] arr1, int[] arr2) { 
		String[] answer = new String[n]; 

		for(int i=0; i<n; i++){ 
			// 10์ง„์ˆ˜ -> 2์ง„์ˆ˜
			String str1 = Integer.toBinaryString(arr1[i]);
			String str2 = Integer.toBinaryString(arr2[i]);

			// ๋ฌธ์ž์—ด ๊ธธ์ด(์•ž์— 0 ๋ถ™์ผ๋•Œ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜)
			int str1Len = str1.length();
			int str2Len = str2.length();
			String result = ""; 

                        /*
			 * ์ •์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„๋•Œ, ์•ž์— 0์„ ๋ถ™์—ฌ์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
			 * ex) arr1[i] = 9 -> 01001 ์ด ๋˜์–ด์•ผํ•จ.
			 * n = 5, str1Len = 4(str1 = 1001)
			 * ๋”ฐ๋ผ์„œ (n - str1Len) ๋งŒํผ "0"์„ ์ถ”๊ฐ€. 
			 */
			if(str1.length() < n) 
				for(int j=0; j<n-str1Len; j++) 
					str1 = "0" + str1; 

			if(str2.length() < n) 
				for(int j=0; j<n-str2Len; j++) 
					str2 = "0" + str2; 

			for(int j=0; j<str1.length(); j++){ 
				// ๋‘ ์ง€๋„ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋ฒฝ(1) ์ด๋ฉด ์ „์ฒด ์ง€๋„์—์„œ๋„ ๋ฒฝ 
				if(str1.charAt(j) == '1' || str2.charAt(j) == '1') 
					result += "#"; 
				else 
					result += " "; 
			} 
			answer[i] = result; 
		} 
		return answer; 
	} 
} 

์ฒซ ๋ฒˆ์งธ ์ฝ”๋“œ๋Š” ๋ญ๊ฐ€ ํ‹€๋ฆฐ์ง€ ๊ณ„์†๋ดค๋Š”๋ฐ ๋ชป์ฐพ์•˜๋‹ค . . .

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€