문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
두 수가 n과 m이라면
">", "=" : n >= m
"<", "=" : n <= m
">", "!" : n > m
"<", "!" : n < m
두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.
1 ≤ n, m ≤ 100
ineq | eq | n | m | result |
---|---|---|---|---|
"<" | "=" | 20 | 50 | 1 |
">" | "!" | 41 | 78 | 0 |
입출력 예 설명
입출력 예 #1
20 <= 50은 참이기 때문에 1을 return합니다.
입출력 예 #2
41 > 78은 거짓이기 때문에 0을 return합니다.
function solution(ineq, eq, n, m) {
if(ineq === ">"){
if(eq === "="){
return n >= m ? 1 : 0
}else{
return n > m ? 1 : 0
}
}else if(ineq === "<"){
if(eq === "="){
return n <= m ? 1 : 0
}else{
return n < m ? 1 : 0
}
}
}
초반에 템플릿 리터럴을 사용해 Number()
를 사용하면 되는거 아냐?하면서 작업했다가 null
이 나왔고 연산 기호는 숫자가 될 수 없다는 걸 깨달았다. 왜 되는줄 알았지...
조건문을 이용해 해당 문자열이 맞으면 삼항연산자를 이용해 값을 반환하는 형식으로 했다.
const operations = {
'>=': (n, m) => n >= m,
'<=': (n, m) => n <= m,
'>!': (n, m) => n > m,
'<!': (n, m) => n < m,
};
function solution(ineq, eq, n, m) {
const op = operations[ineq + eq];
return Number(op(n, m));
}
operations라는 객체를 만들어 사용하신거 같다.
function solution(ineq, eq, n, m) {
if (eq === '=' && n === m) return 1
if (ineq === '<' && n < m) return 1
if (ineq === '>' && n > m) return 1
return 0
}
조건문이 깔끔해서 가지고 왔다.
왜 이런생각을 못했지 싶다...
확실히 코딩 테스트는 수학적인 부분이 많아서
처음 접하면 나 처럼 수포자는 조금 어려운 부분이 있고
생각이 막히는 거 같다...
이렇게 조금식 열어두어야겠다.
어떻게 풀면 좋을지 감이 안 와서 찾아보다가 들어오게 됐는데 푸는 과정 속에 본인의 생각이나 그리고 마치면서 알게 된 점이나 회고하는 과정들이 좋은 것 같아서 하나 배운 것 같아 댓글 남기고 갑니다 !!