Coding test/baekjoon

백준 코딩테스트 공부 기록 2, 3-조건문과 반복문

hello${name} 2022. 4. 19. 10:08

2022. 04. 17

주의할 점 위주로 정리해보았다

* 모든 코드는 자바스크립트(node.js)로 작성합니다

 

2. 조건문

- 조건문의 종류에는  if/else, switch, try/catch/finally가 있다

   이 중 가장 기본적인 조건문은 if/else 문으로, 

   if (조건식) 문장
   if (조건식) 문장 1 else if  {문장 2} else {문장 3} 

   이렇게 작성한다

   * 꼭 소괄호 /  중괄호 있어야 하는가?

   => 조건식을 묶은 소괄호(())는 꼭 입력해야 한다!!

        문장이 한 줄 뿐이면 중괄호가 없어도 되지만, 여러 줄이면 중괄호를 사용해서 블록 문장으로 작성한다.

        +) 중괄호를 쓰지 않을 경우 잘못 해석되는 상황이 발생할 수 있으므로

            문장이 한 줄이더라도 중괄호를 사용하여 작성하자.

 

- switch 문

 표현식의 값에 따라 실행을 분기하고자 할 때 사용. 분기점 여러 개를 간결하게 표현할 수 있다는 장점이 있다

 switch (표현식(즉 비교하고자 하는 값) {
    case 값 1 :
        실행문 1 
        break;
    case 값 2 :
        실행문 2
        break;
 ... 
    default:
        실행문 n+1

표현식 안에 있는 값과 일치하는 값을 만날 경우 (값 1이든, 값 2이든.. case 뒤에 있는 라벨의 값 중) 해당 case의 실행문을 실행한다. 

만약 break가 없다면 실행문을 실행한 뒤 블록을 빠져나오지 않고, break / return / switch 블록의 끝을 만날 때까지 발견한 모든 문장을 실행한다.

default는 switch 문의 표현식이 평가된 값이 어떠한 case 라벨과도 일치하지 않았을 때 마지막으로 실행되는 문장이다.

 

 

 

* 조건식 작성 시 주의사항 *

 

1) 동일연산자(==) 사용 시

- 동일연산자는 좌우 피연산자의 타입을 변환한 다음에 좌변과 우변이 같은지를 비교

  단, 객체 타입 변수의 경우 같은 객체를 가리키는지를 판별한다.

  즉 var a = [1,2,3]; var b = [1,2,3]; 이더라도 a == b 하면 결과는 false!

 

 만약 좌우 피연산자의 타입이 다를 경우,

  • undefined와 null은 동일하다고 간주
  • 한쪽이 숫자고 다른 한쪽이 문자열이면 문자열을 숫자로 변환해서 비교
  • 둘 중 한쪽이 논리값이면 true는 1, false는 0으로 변환해서 비교
  • 한쪽이 객체고 다른 한쪽이 숫자 또는 문자열이면 객체를 toString이나 valueOf 메서드를 사용해서 원시 타입으로 변환한 다음에 비교
  • 위 규칙에서 벗어나면 모두 같지 않음으로 판정

     출처: 모던 자바스크립트 입문

 

2) 논리연산자

논리연산자에는 &&(양 옆이 모두 true여야 true), ||(둘 중 하나라도 true면 true), !(true면 false, false면 true)가 있다

- 관계연산자의 우선순위는 논리 연산자보다 높다

  조건식 x > 0 && y > 0  에서 괄호를 쓸 필요가 없는 이유!

- 논리연산자의 피연산자가 논리값이 아닐 경우.

  0, -0, 빈 문자열, NaN, null, undefined 는 false, 나머지는 true로 평가

 

  내가 백준 코딩 문제를 풀면서 실수했던 것:

  세 수의 값이 모두 같은 지 판단할 때, 

  if (a==b==c) 이렇게 작성해서는 안된다!!

  이렇게 작성할 경우 먼저  a==b를 먼저 평가한 다음 a와 b가 같으면 true를 반환하고,

  true == c 인지 비교하게 된다! 이 경우 c가 정수일 때 1이어야만 true가 되는 것. 

  따라서 세 수의 값이 모두 같은 지 판단하려면,

  ( (a==b) && (b==c) ) 이런 식으로 작성하자. 

 

 

3. 반복문

 

문제 풀이 시 내가 계속 실수했던 것...

console.log()는 줄바꿈이 표현되어있는 출력함수다!!!

줄바꿈('\n')을 추가할 필요가 없다. 

 

- String.prototype.repeat()

  const hello = 'Hello';

  console.log(`${hello.repeat(3)}`); 을 하면

  HelloHelloHello가 출력된다!