백준 -단계별 - 조건문

0

알고리즘

목록 보기
6/8

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 )

참고 : https://overcome-the-limits.tistory.com/243

profile
기록을 통해 한 걸음씩 성장ing!

0개의 댓글