코딩테스트 연습 > 코딩 기초 트레이닝
문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
두 수가 n과 m이라면
">", "=" : n >= m
"<", "=" : n <= m
">", "!" : n > m
"<", "!" : n < m
두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.
n, m ≤ 100| ineq | eq | n | m | result |
|---|---|---|---|---|
| "<" | "=" | 20 | 50 | 1 |
| "<" | "!" | 41 | 78 | 0 |
내가 작성한 코드는... 정직한 if문을 활용하여 굉장히 직관적이지만, 가독성이 떨어진다는 단점이 있다.
아래 다른 사람의 풀이를 보고, 자바스크립트의 객체(Object) 개념을 지속적으로 복습해야 겠다고 다짐할 수 있었다😅
알고리즘 문제풀이 뿐만 아니라, 실무에서도 유용하게 사용할 수 있는 중요한 개념이라고 생각한다.
// 나의 풀이
const solution = (ineq, eq, n, m) => {
let answer = 0;
if(ineq === ">" && eq === "=") {
n >= m ? answer = 1 : answer = 0
} else if(ineq === "<" && eq === "=") {
n <= m ? answer = 1 : answer = 0
} else if(ineq === ">" && eq === "!") {
n > m ? answer = 1 : answer = 0
} else {
n < m ? answer = 1 : answer = 0
}
return answer;
}
// 다른 사람의 풀이 참고
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));
}
객체 key에 계산식 및 템플릿 리터럴 사용하기
객체를 만들 때 객체 리터럴 안의 프로퍼티 키가 대괄호로 둘러싸여 있는 경우, 이를 계산된 프로퍼티(cumputed property)라고 부른다.
let name = 'server name'
let one = 1
let two = 2
// [name]은 프로퍼티 이름을 변수 name에서 가져오겠다는 것을 의미
let server = {
[name]: 'ES6',
[one + two]: 'one two',
[`${one} server`]: 9999,
}
console.log(server) // { 3: 'one two', 'server name': 'ES6', '1 server': 9999 }
// 사용자가 프롬프트 대화상자에 `apple`을 입력했다면 `bag`에는 `{apple: 5}가 할당되었을 것
let fruit = prompt("어떤 과일을 구매하시겠습니까?", "apple");
let bag = {
[fruit]: 5, // 변수 fruit에서 프로퍼티 이름을 동적으로 받아 오기
};
alert( bag.apple ); // fruit에 "apple"이 할당되었다면, 5가 출력됨
// switch문을 객체 리터럴로 구현
let fruit = 'strawberries';
switch (fruit) {
case 'apples':
console.log('Apples');
break;
case 'oranges':
console.log('Oranges');
break;
default:
console.log('Unknown fruit');
}
// Logs: 'Unknown fruit'
const logFruit = {
'apples': () => console.log('Apples'),
'oranges': () => console.log('Oranges'),
'default': () => console.log('Unknown fruit')
};
(logFruit[fruit] || logFruit['default'])(); // Logs: 'Unknown fruit'
참고 블로그
모던 JavaScript 튜토리얼 : 객체
자바스크립트 객체 리터럴을 이용한 스위치문 구현
Number()와 parseInt()의 차이