2753 -- 윤년 구하기 -- 배수
const fs = require('fs')
const inputData = fs.readFileSync('dev/stdin')
if (inputData % 4 ===0){
if ((inputData%100 !==0) | (inputData%400 ===0) ) {
console.log(1)
}else{
console.log(0)
}
}else {
console.log(0)
}
//조금 더 간단한게
if ((inputData % 4 === 0 && inputData % 100 !== 0) || inputData % 400 === 0) {
console.log("1");
} else {
console.log("0");
}
14681 -- 사분면 고르기
const fs = require('fs');
const [num1, num2] = fs.readFileSync(0).toString().trim().split('\n').map(Number);
//내 풀이
if (num1>0 && num2 >0) {
console.log(1)
} else if (num1<0 && num2>0) {
console.log(2)
}else if (num1<0 && num2 <0){
console.log(3)
}else {
console.log(4)
}
if(num1> 0) num2 > 0 ? console.log(1) : console.log(4)
if(num1< 0) num2 > 0 ? console.log(2) : console.log(3)
오류가 나와서 확인을 해보니 'dev/stdin'
을 하면 에러가 나온다고 한다.
나는 일일이 &&조건
을 걸었는데 ternary
를 이용하면 간단하게 표현 가능
참고 :https://overcome-the-limits.tistory.com/323
2884 -- 알람 시계
const fs = require('fs');
let [hour, minute] = fs.readFileSync(0).toString().trim().split(' ').map(Number);
if (minute - 45 < 0 ){
minute = 60 - (45-minute)
if (hour !==0){
hour = hour - 1
}else {
hour = 23
}
}else {
minute = minute-45
}
console.log (hour,minute)
minute = 60 - (45-minute)
이 규칙을 찾아내는 것이 유효
2525 -- 오븐시계 공백과 두줄로 입력 받기
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split('\n');
const current = input[0].split(' ').map(Number);
const currentHour = current[0];
const currentMinute = current[1];
const cookTime = Number(input[1]);
참고: https://overcome-the-limits.tistory.com/entry/알고리즘-백준-2525-오븐-시계-with-nodejs
//내 풀이
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split('\n');
const current = input[0].split(' ').map(Number);
const currentHour = current[0];
const currentMinute = current[1];
const cookTime = Number(input[1]);
let resultHour = 0
let resultMinute = 0
if (currentMinute + cookTime >= 60) {
const cookHour = parseInt((currentMinute+ cookTime)/60)
const cookMinute = parseInt((currentMinute+ cookTime)%60)
if (cookHour + currentHour >= 24 ){
resultHour = cookHour+ currentHour - 24
} else {
resultHour = cookHour + currentHour
}
resultMinute = cookMinute
}else {
resultHour = currentHour
resultMinute = currentMinute+ cookTime
}
console.log(resultHour, resultMinute)
별도의 변수를 설정하고 각 경우에 맞춰서 나누는 식으로 진행
const current = input[0].split(' ').map(Number);
const currentHour = current[0];
const currentMinute = current[1];
const cookTime = Number(input[1]);
const cookEndTimeHour = parseInt((currentHour*60 + currentMinute + cookTime)/ 60) ;
const cookEndTimeMinute = parseInt((currentHour*60 + currentMinute + cookTime)% 60);
console.log(cookEndTimeHour >= 24 ? cookEndTimeHour - 24 : cookEndTimeHour, cookEndTimeMinute);
전체를 분
의 개념으로 접근 (60진법
)해서 나누기
와 몫
으로 접근하고 간단하게 24 넘는지만 판단
2480 주사위 세개
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split(' ').map(Number);
const [a, b, c] = [input[0], input[1], input[2]];
const answer = (a, b, c) => {
if(a === b && a === c && b === c) return console.log(10000+(a*1000));
if(a !== b || a !== c || b !== c) {
if(a === b || a === c) return console.log(1000+(a*100));
if(b === c) return console.log(1000+(b*100));
}
if(a !== b && a !== c && b !== c) {
const sort = [a, b, c].sort();
return console.log(sort.pop() * 100);
}
}
answer(a, b, c);
별도의 함수를 정의하여 전개
1개의 값만 다른 경우
는 합집합(||)
을 이용, 모두 다른 경우
에는 sort
를 이용해서 max 값을 찾아냄 (sort하면 max값이 제일 마지막
-> 거기서 pop
)