1. 알고리즘과 런타임 에러 (Feat.SyntaxError)

안녕하세요.
백준 알고리즘 풀기 첫번째 시작합니다.

거창한건 아니고 제가 공부한 내용들 보기 쉽게 공유하고,
필요하신 분들이 찾아 보시는 것이 저의 가장 큰 기쁨입니다.

이번에 가져온 문제는 백준 10171번 문제입니다.

처음 시작이기도 하고 너무 쉽게 풀 줄 알았는데 전혀 아니더군요
우선 접근 순서 보여드립니다.

첫번째 코드

console.log(\    /\)
console.log( )  ( '))
console.log((  /  ))
console.log( \(__)|)

두번째 코드

\    /\
 )  ( ')
(  /  )
 \(__)|

세번째 코드

let a = '\    /\'
let b = ')  ( ')'
let c = '(  /  )'
let d = '\(__)|'

console.log(a)
console.log(b)
console.log(c)
console.log(d)

네.. 세가지 접근 방식 모두 런타임 에러였습니다.

제가 에러에 대해 정확하게 모르고 있다고 판단이 되어 에러부터 확인 해보았습니다.

자주 등장하는 3가지 에러

  1. TypeError
    1. 함수에 전달된 피연산자 또는 인수가 해당 연산자나 함수가 예상하는 타입과 호환되지 않거나,
    2. 변경할 수 없는 값을 수정하려고 하거나,
    3. 부적절한 방법으로 값을 사용하려고 할 때.
  • 말 그대로 Type에 관한 에러라고 판단된다.

  1. ReferenceError
    1. 존재하지 않는 변수를 참조했을 때 발생하는 에러
  • 선언된 적이 없는 변수를 참조하려고 할 때 발생한다고 합니다.

  1. SyntaxError
    1. 문법적으로 유효하지 않는 코드를 해석하려고 시도할 때 발생하는 오류
    2. Javascript 엔진이 코드를 구문 분석할 때 언어의 구문에 맞지 않는 토큰이나 토큰 순서를 만나면 이 오류를 던집니다.
  • 문법오류이다.

요약

  1. TypeError는 말 그대로 Type이 맞지 않을 때 일어나는 오류
  2. ReferenceError는 변수 설정에 관한 오류
  3. SyntaxError는 문법오류

다시 고양이 문제로 돌아가서
저의 에러는 문법 오류라는 것을 알게 되었습니다.
그럼 문법적으로 맞는 함수를 작성하기 위한 고민을 해봐야 할 것 같습니다.

우선 템플릿 리터럴을 사용하여 백틱처리만 한채로 돌려봅니다.

[백슬래시만 표시되지 않고 있다]

아마도 백슬래시의 표기법이나 사용법이 따로 있는듯 합니다.

백슬래시의 표기법을 찾아보니
리터럴 백슬래시를 사용하려면 이중 백슬래시를 사용해야 한다는 결론이 나왔습니다.
만약 백슬래시 2개를 표시하고 싶다면 총 4개의 백슬래시를 사용해야 한다는 것입니다.

위 예시에 나오는 백슬래시 대신에 백슬래시를 2번씩 넣어보겠습니다.

그러자 정상적으로 출력되는 모습을 볼 수 있었습니다.


결론
간단하게 생각되었던 문제임에도 불구하고, 그보다 간단한 문법이나 특수문자 사용법을 몰랐다는 것에 놀랐고, 아마 앞으로 이런일이 많이 있을거라고 보여지고, 그런 모르는 것들을 알아가기 위해서 공부하고, 정리하고, 기록해야겠다는 생각을 하게 되었습니다.

>> 알고리즘 풀고 싶으신 분 !! 백준 링크 <<

좋은 웹페이지 즐겨찾기