1. 삼항 조건 연산자
- 조건식의 평가 결과에 따라 반환할 값을 결정한다. (자바스크립트의 유일한 삼항 연산자)
- 조건식 ? true일 때 반환할 값 : false일 때 반환할 값
- 피연산자인 조건식은 불리언 타입의 값으로 평가될 표현식이다. 따라서 조건식의 평가 결과가 불리언 값이 아니라면, 불리언 값으로 암묵적 타입 변환된다.
- 값으로 평가할 수 있는 표현식인 문이다. if...else 문으로 유사하게 처리 가능하지만 이는 표현식이 아닌 문이다. 즉 삼항 조건 연산자 표현식은 값처럼 다른 표현식의 일부가 될 수 있기에 if...else문보다 유용하다.
- 조건에 따라 수행해야 할 문이 하나가 아니라 여러 개라면 if...else 문의 가독성이 더 좋을 수 있다.
let x = 10;
let result = x%2 ? '홀수' : '짝수';
//0은 false로 암묵적 타입 변환
console.log(result); //짝수
let ifResult = if (x % 2) {result = '홀수';} else {result = '짝수';};
console.log(ifResult); //SyntaxError: Unexpected token 'if'
2. 14681 (사분면 고르기)
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split(`\n`);
const a = parseInt(input[0]);
const b = parseInt(input[1]);
if( a > 0) {
console.log(b>0?1:4);
}else {
console.log(b>0?2:3);
}
처음에 작성했던 코드인데, 런타임 오류가 뜬다.
const fs = require('fs');
const input = fs.readFileSync(0).toString().split('\n');
let a = parseInt(input[0]);
let b = parseInt(input[1]);
if (a > 0) {
console.log(b > 0 ? 1 : 4);
} else {
console.log(b > 0 ? 2 : 3);
}
구글링하다 이렇게 제출하고 오류를 해결했다.
readFileSync()에 들어간 입력이 문제였던거 같은데, 같은 방식으로 여태 제출하다 이 문제에서 왜 오류가 나는 지 모르겠다.
node.js 자체가 아직 낮설다보니 좀 더 공부하고 추후에 이유를 찾아보려한다.
참조
deep dive
'Study > Algorithm' 카테고리의 다른 글
[programmers / JavaScript] 숫자 문자열과 영단어 (0) | 2022.04.30 |
---|---|
<BEAKJOON / node.js> 10828 스택 (0) | 2022.04.29 |
<BEAKJOON> 4344 JavaScript (0) | 2022.04.26 |
<programmers / JavaScript> 직사각형 별찍기 (0) | 2022.04.14 |
<BEAKJOON / node.js> 10171, 10172 (0) | 2022.03.28 |