7 - 1 TIL(클린코드)

hoin_lee·2023년 7월 1일
0

TIL

목록 보기
196/236

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를 통해 원하는 물건의 개수가 맞는지 확인하고 다 맞다면 마지막에 resulttrue로 바꿔 진행하여 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문을 사용하면 훨씬 깔끔해지기도 한다
사람을 위해 코드를 작성한다는 생각을 해보자

Truthy 와 fals

JS는 자동 형변환이 있다보니 자동적으로 true와 false로 형변환 되는 경우가 있다.

if(num===undefined||num===null){
 //....some code 
}

위와 같이 하기보다 if(num)이런식으로 조건을 해놓으면 falsy가 자동형변환 돼서 쉽게 숏코딩이 가능하다.

profile
https://mo-i-programmers.tistory.com/

0개의 댓글