자료구조 및 알고리즘/JavaScript Practice
JS Practice) 프로그래머스 : OX퀴즈
Ryomi
2023. 4. 26. 09:30
728x90
반응형
OX퀴즈
문제설명 :
덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한 사항
- 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
- 1 ≤ quiz의 길이 ≤ 10
- X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
- X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
- -10,000 ≤ X, Y ≤ 10,000
- -20,000 ≤ Z ≤ 20,000
- [연산자]는 + 와 - 중 하나입니다.
입출력 예
quiz | result |
["3 - 4 = -3", "5 + 6 = 11"] | ["X", "O"] |
["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"] | ["O", "O", "X", "O"] |
첫번째 접근
: quize 배열을 돌며 각 요소를 연산했다. 먼저 배열의 요소를 split한 후 map()을 이용해 NaN이 아니면 el를, 숫자이면 Number로 바꾼 배열을 만들었다. 이후 연산자의 경우에 따라 정답 여부를 answer배열에 넣어 반환했다.
function solution(quiz) {
let answer = []
for(const el of quiz) {
let m = el.split(' ').map(el => isNaN(Number(el)) ? el : Number(el))
if(m[1] === '+'){
if(m[0] + m[2] === m[4]) answer.push('O')
else answer.push('X')
} else {
if(m[0] - m[2] === m[4]) answer.push('O')
else answer.push('X')
}
}
return answer
}
solution - 응용
function solution(quiz) {
return quiz.map(el => {
let m = el.split(' ')
let sign = m[1] === '+' ? 1 : -1
return +m[0] + m[2]*sign === +m[4] ? 'O' : 'X'
})
}
// operator의 경우에 따라 식을 나눠주지 않고 operator 변수에 값을 할당해 m[2]에 곱해준다. 문자형 숫자에 +1를 곱해 형변환한다.
728x90
반응형