Algorithm
function solution(want, number, discount) {
let answer = 0;
for(let i=0; i<=discount.length-1; i++) {
if(i+10>discount.length) break;
let result = false
let list = discount.slice(i,i+10)
for(let j=0; j<=number.length-1; j++) {
let count = list.filter(v=> v===want[j]).length
if(count!==number[j]) break;
if(j===number.length-1) result=true
}
if(result) {
answer ++
}
}
return answer;
}
slice
를 통해 10일치 행사물건 리스트를 빼낸다for
문을 통해 slice
로 분리한 10일 행사 물건을 각각 filter
를 통해 원하는 물건의 개수가 맞는지 확인하고 다 맞다면 마지막에 result
를 true
로 바꿔 진행하여 10일동안 살 수 있는 물건이 모두 있기에 정답 answer
를 더해준다.클린코드
//This JSX:
ReactDOM.render(
<div id="msg">Hello World!</div>,
mountNode
);
// Is transformed to this JS :
ReactDOM.render(React.createElement('div',{id:'msg'},'Hello World!'),mountNode)
if
문을 객체의 키의 값으로 넣어보기도 할텐데 삼항연산자는 또 된다
if
문과 값과 식은 다르다
{}
에는 값과 식만 들어가야 한다(React를 사용할 때)
조건 ? 참(식) : 거짓(식)
function example(){
return condition1 ?value1
:condition2 ? value2
:condition3 ? value3
:value4;
}
function example() {
if(condition1) {return value1;}
else if (condition2) {return value2;}
else if (condition3) {return value3;}
else {return value4;}
}
위와 아래는 똑같은 동작을 하는 코드이다. 무엇이 더 가독성이 좋을까?
하지만 if..else if.. else if
쌓아가기 보단 switch..case
문을 사용하면 훨씬 깔끔해지기도 한다
사람을 위해 코드를 작성한다는 생각을 해보자
JS는 자동 형변환이 있다보니 자동적으로 true와 false로 형변환 되는 경우가 있다.
if(num===undefined||num===null){
//....some code
}
위와 같이 하기보다 if(num)
이런식으로 조건을 해놓으면 falsy가 자동형변환 돼서 쉽게 숏코딩이 가능하다.