코딩 테스트 풀이 🛠

n 개의 2진수 xor연산 결과를 10진수로 출력

엄성준 2023. 1. 5. 12:00

문제 설명

 

n개의 2진수가 주어질 때, 이를 xor 연산한 결과를 10진수 숫자로 변환해서 출력하는 함수, solution을 완성해주세요.

 

예를 들어, arr ['10110', '1010', '11110']가 있을 때, xor 연산한 결과는 이진수로 '10'이고, 10진수로 변환하면 2입니다.

 

- arr는 길이가 1 이상 5 이하의 배열입니다.


- arr의 요소는 '0', '1'로 이루어진 길이가 1 이상 10 이하의 문자열입니다.

 

 

나의 풀이

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function solution(arr) {
 
    let answer = 0
 
   const $arr =  arr.map((item)=>{
            return parseInt(item,2// 2진수 수를 10진수로 변화 22, 10 ,30
         })
 
    switch($arr.length){
 
        case 0:
        return 0
        break;
 
        case 1:
        return $arr[0
        break;
 
        case 2:
        return $arr[0] ^ $arr[1]
        break;
 
        case 3:
        return $arr[0] ^ $arr[1] ^ $arr[2]
        break;
 
        case 4:
        return $arr[0] ^ $arr[1] ^ $arr[2] ^ $arr[3]
        break;
 
        case 5:
        return $arr[0] ^ $arr[1] ^ $arr[2] ^ $arr[3] ^ $arr[4]
        break;
 
    }
 
}
 
cs

 

문제를 풀며 느낀 점

 

- 먼저 arr.map() 함수를 통해서 배열 arr을 순회하면서 parseInt()를 통해서 2진수인 요소를 10진수로 변환하여 담은 배열을 $arr에 할당해 주었습니다.

그 후 10진수의 숫자들을 xor연산을 해줘야 하는 부분에서 고민을 많이 했었는데요. 조건에 배열 안의 요소는 최대 5개라고 명시했기 때문에 switch case문을 통해서 $arr.length를 통해서 return 되는 요소의 개수($arr.length) 별로 case를 다르게 주어서 연산해 주었습니다. 조금 지저분해 보이는데 이렇게 푸는 게 맞는지 모르겠습니다