문제 1

모모·2021년 10월 9일
0

문제 복기

목록 보기
1/5

조건문

7번 : FizzBuzz

3과 5 모두로 나누어 떨어지는 것이 더 적은 경우의 조건이기 때문에 이 조건을 가장 먼저 작성해야 함.
만약 3으로 나누어 떨어지는 수를 먼저 걸러주면 3과 5 모두로 나누어 떨어지는 조건에 걸리지 않음.
반대로 3이나 5로 나누어 떨어지지 않는 경우는 가장 많은 경우이므로 맨 아래로 빼주어야 함.

9번 : 월에 해당하는 일자 반환하기

가장 적은 경우의 수를 먼저 if 및 else if로 걸러주고, 가장 많은 경우의 수를 else로 걸러내서 코드를 간단하게 만들기.

13번 : 점수에 해당하는 등급 및 기호(+/-) 리턴하기

등급 분류와 기호 분류라는 두 가지 기능을 하나의 함수에 담지 말 것.
객체지향 5대 원리 SOLID 중 하나인 SRP(단일 책임 원칙)에 따라, 작성된 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하는 데 집중되어야 함.
처음 작성한 코드에서 등급 분류와 기호 부여라는 두 가지 일을 수행했지만, 등급 분류 함수와 기호 부여 함수 두 가지로 나누는 것이 실무에서 유지보수에 용이함.

14번 : 임의의 세 변의 길이로 직각삼각형 여부를 리턴하기

세 가지 방법을 사용하라는 조건에 따라 변1, 변2, 변3이 각각 가장 긴 변일 때를 가정하였음.
즉, 3개의 if문을 만들고 그 안에 3개의 거듭제곱 식을 작성했음. 하지만 이는 의미없는 코드의 나열이자 코드의 가독성을 떨어뜨림. 정확한 문제의 의도 파악에 따라 세 가지 방법을 모두 사용하면 됨.

16번 : 1초 뒤의 시, 분, 초 값을 리턴하기

아래와 같이 시분초 변화를 중첩 조건문으로 만들 필요없었음.

if(second === 59){
  if(minute === 59){
   ...

가장 작은 단위부터 각 parameter별로 독립된 if문을 만들어 해당 사항이 있는지 체크하면 됨.
또한, 할당해야 하는 부분에 일치연산자를 사용했는데, 항상 어떤 동작을 구현하고 싶은지 의도를 생각하고 코드를 작성할 것.

17번 : falsy값을 true로 리턴하기

NaN을 입력 받은 경우 true를 리턴해야 하는데, 이 부분에서 계속 통과 조건을 만족하지 못했다. 알고보니 NaN은 모든 값과 일치하지 않는다. 그래서 NaN === NaN의 결과는 false이다.
그렇기 때문에 조건을 만족해야 값을 return하는 if문 자체를 아예 통과하지 못했고, true를 반환할 수 없었다.
내장함수 boolean을 사용하여 임의의 값을 true/false로 바꾸고, 이를 부정하여 원하는 값을 찾아낼 수 있다.

0개의 댓글