문제 설명
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를 다르게 주어서 연산해 주었습니다. 조금 지저분해 보이는데 이렇게 푸는 게 맞는지 모르겠습니다
'코딩 테스트 풀이 🛠' 카테고리의 다른 글
[프로그래머스] 두 정수 사이의 합 (0) | 2023.01.05 |
---|---|
문자열 s가 있습니다. 이 문자열의 대/소문자를 서로 바꾸는 함수 (0) | 2023.01.05 |
n 의 약수의 개수를 출력 (0) | 2023.01.05 |
문자열 중 중복된 글자를 제외한 문자 수를 출력 (0) | 2023.01.05 |
[프로그래머스] 중복된 문자 제거 (0) | 2023.01.04 |