안녕하세요
[node.js] 백준 조건문 단계 (자바스크립트) 1330 ~ 본문
클론코딩을 하면서 부족한 자바스크립트 문법은 백준을 통해서 공부합시다.
초보입니다. 코드 설명은 "참고만" 해주세요.
https://www.acmicpc.net/step/4
1330 두 수 비교하기
두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.
1 2
첫째 줄에 다음 세 가지 중 하나를 출력한다.
- A가 B보다 큰 경우에는 '>'를 출력한다.
- A가 B보다 작은 경우에는 '<'를 출력한다.
- A와 B가 같은 경우에는 '=='를 출력한다.
결과
<
제출한 답
const [a, b] = require('fs').readFileSync('/dev/stdin').toString().split(' ').map(Number)
if (a > b) {
console.log(">")
} else if (a < b) {
console.log("<")
} else {
console.log("==")
}
- require('fs') : file system 모듈을 불러옵니다.
- .readFileSync('/dev/stdin') : 데이터가 저장된 위치에 접근하여 내용을 읽어옵니다.
- .toString() : 백준은 자바스크립트에서 input을 받기 위해 str 형변환을 해주어야 한다고 합니다.
- .split(' ') : 입력받은 데이터를 ' ' 공백으로 구분하여 저장합니다. ( ['1', '2'] )
- [a, b] : a 변수는 1로, b 변수는 2로 언패킹 합니다.
- .map(Number) : str(문자열)에서 int(정수형) 로 형변환을 해 대소비교를 할 수 있도록 합니다.
9498 시험 성적
시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오. 시험 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
100
결과
A
제출한 답
const score = require('fs').readFileSync('/dev/stdin')
if (score>=90){
console.log('A');
} else if (score>=80){
console.log('B');
} else if (score>=70){
console.log('C');
} else if (score>=60){
console.log('D');
} else{
console.log('F');
}
- 대소비교는 >=, <=, ==, >, <, 등이 있습니다.
2753 윤년
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
2000
결과
1
제출한 답
const inputYear = require('fs').readFileSync("/dev/stdin")
if ((inputYear % 4 == 0 && inputYear % 100 != 0) || inputYear % 400 == 0){
console.log(1)
} else {
console.log(0)
}
- % : 나머지를 구합니다
- && : 둘 이상의 조건이 모두 true여야 합니다.
- != : 일치하지 않으면 true를 반환합니다.
- || : 하나의 조건이라도 true여야 합니다.
14681 사분면 고르기
첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0)
12
5
결과
1
제출한 답
const rl = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input.push(line)
}) .on('close', function () {
const [x, y] = input
if (x > 0 && y > 0) {
console.log(1)
} else if (x < 0 && y > 0) {
console.log(2)
} else if (x < 0 && y < 0) {
console.log(3)
} else {
console.log(4)
}
process.exit();
});
14681번 문제의 경우에는 fs 를 이용하였더니 런타임 에러 (EACCES) 가 발생하였습니다. readline을 이용해야 합니다.
- require('readline').createInterface : input을 받기 위한 function
- let input = [] : input을 받아 저장할 리스트를 만듭니다.
- rl.on('line', function (line) { input.push(line) }) : line에 테스트케이스를 받게 됩니다. 그리고
input.push(line) : input 리스트에 push합니다. - .on('close', function () { }); : { } 안에 코드를 작성합니다.
2884 알람 시계
첫째 줄에 두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 그리고 이것은 현재 상근이가 설정한 놓은 알람 시간 H시 M분을 의미한다. 입력 시간은 24시간 표현을 사용한다. 24시간 표현에서 하루의 시작은 0:0(자정)이고, 끝은 23:59(다음날 자정 1분 전)이다. 시간을 나타낼 때, 불필요한 0은 사용하지 않는다.
알람을 설정하면 원하는 시간보다 45분 빠른 시간으로 설정되도록 프로그램을 작성하시오. 아래와 같이 입력
0 30
결과
23 45
제출한 답
const [h, m] = require('fs').readFileSync('/dev/stdin').toString().split(' ').map(Number)
if (h == 0) {
if (m < 45) {
console.log(`23 ${m+15}`)
} else {
console.log(`0 ${m-45}`)
}
} else if ( h >= 1 ){
if (m < 45) {
console.log(`${h-1} ${m+15}`)
} else {
console.log(`${h} ${m-45}`)
}
}
- 0시 일때는 "23시" 또는 "0시"가 되도록, 0시가 아닐때는 "h-1시" 또는 "h시"가 되는 조건으로 나누었습니다.
2525 오븐 시계
첫 번째 줄에는 현재 시각을, 두 번째 줄에는 소요되는는 시간을 아래와 같이 입력받습니다.
14 30
20
결과를 아래와 같이 출력하면 됩니다.
14 50
제출한 답1
var [currentTime, cookingTime] = require('fs').readFileSync('/dev/stdin').toString().split('\n')
const [hour, minute] = currentTime.split(' ').map(Number)
var cookingTime = Number(cookingTime)
const totalMinute = hour*60 + minute + cookingTime
const resultHour = Math.floor((totalMinute)/60)
const resultMinute = totalMinute%60
if (resultHour >= 24 ){
console.log(`${resultHour-24} ${resultMinute}`)
} else {
console.log(`${resultHour} ${resultMinute}`)
}
- .split() : 입력을 "\n" 과 " " 로 두 번 받아야 했습니다.
- 조건문을 활용하여 요리시간을 합한 시각이 24시를 넘어갔을 때는 0시부터 표기되도록 결과 시간에 -24를 해줍니다.
2480 주사위 세개
1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
- 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.
- 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.
- 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.
3개의 수를 입력받고 위의 조건에 따라서 상금을 구하는 프로그램을 작성하시오
3 3 6
결과
1300
제출한 답
const dice = require('fs').readFileSync('/dev/stdin').toString().split(' ').map(Number)
const sortDice = dice.sort()
const [d1, d2, d3] = sortDice
if ( d1 == d2 && d2 == d3 ) {
console.log(10000+d1*1000)
} else if (d1 != d2 && d2 != d3 && d3 != d1) {
console.log(d3*100)
} else if ( d1 == d2 || d2 == d3 )
console.log(1000+d2*100)
else if ( d3 == d1 ) {
console.log(1000+d1*100)
}
- 좀 더 간단하게 할 수 있을 것 같은 느낌도 듭니다.
조건문 단계는 여기까지 입니다.
'백준 자바스크립트' 카테고리의 다른 글
[node.js] 문자열 단계 (자바스크립트) 11654 ~ (0) | 2022.05.10 |
---|---|
[node.js] 함수 단계 (자바스크립트) 4673 ~ (0) | 2022.05.08 |
[node.js] 백준 1차원 배열 단계 (자바스크립트) 10818 ~ (0) | 2022.05.05 |
[node.js] 백준 반복문 단계 (자바스크립트) 2739 ~ (0) | 2022.05.04 |
[node.js] 백준 입출력과 사칙연산 단계 (자바스크립트) 2557 ~ (0) | 2022.04.30 |