18108번 1998년생인 내가 태국에서는 2541년생?!
const fs = require('fs');
const inputData = fs.readFileSync("/dev/stdin").toString().trim();
console.log(inputData - 543)
- 이렇게 풀었는데 왜 이게 맞았는지 모르겠다. inputData는 toString()메소드로 인해서 문자열이 된 것이 아닌가?
- inputData - 543은 543을 문자열로 새로 메모리에 할당해서 연산을 할거라고 봤는데 막상 돌려보니 정답이었다....
이유를 찾아보자
- toString()은 분명 문자열을 반환해주는 것이 맞다.
- trim()의 경우 파이썬의 strip()과 같은 기능이다. 좌우 공백 제거하는 기능!
--> 그렇다면 inputData 식별자는 값이 문자열 타입이라는 것을 알 수 있다. (typeof로 확인해봐도 string이다.)
--> console.log(543 - inputData)를 하면 문자열이 될까? 싶었지만 암묵적으로 inputData 식별자의 값이 숫자가 되는 것을 볼 수 있었다....왜지!? 모던 자바스크립트 딥 다이브에서는 마이너스 연산자에 대해 설명이 없었던 것 같은데.. 암묵적 타입 변환에 대해서 더 찾아본다.. 따로 정리해둬야겠다.
결론. 암묵적 타입 변환이 이루어지는 것이 맞다! JS 카테고리에 정리를 해야겠다.
'Algorithm' 카테고리의 다른 글
백준 문제 JS로 시작 2022.05.22 (0) | 2022.05.22 |
---|
댓글