본문 바로가기

알고리즘

자바스크립트 조건문 문제풀이

728x90

[문제1 : 오븐시계]

https://www.acmicpc.net/problem/2525

 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

[나의 답안]

let fs = require("fs");
let input = fs.readFileSync("dev/stdin").toString().split("\n");

let H = Number(input[0].split(" ")[0])
let M = Number(input[0].split(" ")[1])
let T = Number(input[1].split(" ")[0])

if(M+T>=60){
    H=H+parseInt((M+T)/60)
    M=(M+T)%60
    if(H>23){
        H=H-24;
    }
}else{
   M=M+T
}

console.log(H+ " "+M)

[풀이]

M과 T의 합이 단순히 60을 한번 넘는 것이 아니라 120과 같이 시간이 두번 넘을 수도 있다는 것을 생각하여 parseInt를 사용하는것이 핵심!

 

[인사이트]

let [a,b] = input[0].split(" ").map(Number)

 

 

[문제2 : 주사위 세개]

https://www.acmicpc.net/problem/2480

 

2480번: 주사위 세개

1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.  같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.  같은 눈이 2개

www.acmicpc.net

[나의 답안]

let fs = require("fs");
let input = fs.readFileSync("dev/stdin").toString().split("\n");

let [a,b,c] = input[0].split(" ").map(Number)
let answer=0;

if(a==b&&b==c&&a==c){
    answer=1000*a+10000
}else if(a!==b&&b!==c&&c!==a){
    answer=Math.max(a,b,c)*100
}else{
    if(a==b&&a!==c){
        answer=a*100+1000
    }else if(b==c&&a!=c){
        answer=b*100+1000    
    }else if(a==c&&a!=b){
         answer=a*100+1000
    }
}
  console.log(answer)

 

[인사이트]

 

if(a==b&&b==c) console.log(10000+a*1000);
else if(a==b) console.log(1000+a*1000);
...
else console.log(Math.max(a,b,c)*100);

풀어보고 나니 else에사 a!==c 부분을 굳이 써줄 필요가 없어서 더 간단히 표현하는 것이 가능하다는 것을 깨달았다. 

728x90