
위의 그림과 같이 고양이를 출력하는 문제다.
아주간단하다 생각했다. 실제로 C#으로는 간단하게 해결되었다.
Console.WriteLine(@"\ /\
) ( ')
( / )
\(__)|");
@를 상용하면 이후 문자열내의 개행또한 똑같이 적용되어 출력되기 때문에 간단하게 맞출 수 있다.
Javascript에도 당연히 같은 기능을 하는 문자열 리터럴 빽틱이 존재한다. 따라서 똑같은 느낌으로 작성하였지만, 틀렸다는 결과가 나왔다.
console.log(`\ /\
) ( ')
( / )
\(__)|")`)
으잉? 이게 왠일? 똑같은 구조인데 왜 틀렸을까 고민해보니 \의 문제였다. 대부분의 언어에서 \는 이스케이프 특수문자로 사용된다. C#도 포함되는 내용이지만, 다른점은 C#의 @뒤에 쓰인 문자열은 \또한 문자열로 그냥 읽는 반면에, javascript에서 백틱 내의 문자열은 \를 그대로 이스케이프 문자로 인식하기 때문이다.
따라서 javascript에서 고양이를 그리기 위해서는 \를 두번씩 사용해 주어야한다.
console.log(`\\ /\\
) ( ')
( / )
\\(__)|")`)