오늘도 코딩하나
[백준_javascript] 조건문(2884, 2525, 2480) 본문
#2884 (알람시계)
const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : __dirname+'/input.txt';
const input = fs.readFileSync(file).toString().trim().split(' ');
let h = Number(input[0]);
let m = Number(input[1]);
let alarm = '';
if(m < 45) {
if(h == 0) {
h += 23;
} else {
h -= 1;
}
m = 60+m-45;
} else {
m -= 45;
}
console.log(h,m);
#2525 (오븐 시계)
const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : __dirname+'/input.txt';
const input = fs.readFileSync(file).toString().trim().split('\n');
let [h,m] = input[0].split(' ').map(Number);
let lt = parseInt(input[1]);
if(m+lt > 60) {
if(h == 23) h = 0;
else h += 1;
m = m+lt-60;
} else {
m += lt;
}
console.log(h,m);
#2884 알람시계 문제와 유사한 문제인 줄 알고 호다닥 하다가 테스트도 제대로 안하고 제출했다..!
요리하는 데 필요한 시간이 60분을 넘을 수 있다는 점을 간과했다..머쓱;;
그래서 아래와 같이 다시 코드를 작성했다.
solution1.
const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : __dirname+'/input.txt';
const input = fs.readFileSync(file).toString().trim().split('\n');
let [h,m] = input[0].split(' ').map(Number);
let lt = parseInt(input[1]);
m += lt;
if(m >= 60) {
h += Math.floor(m/60);
m = m%60;
}
if(h>=24) {
h %= 24;
}
console.log(h,m);
solution2.
const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : __dirname+'/input.txt';
let [time, lt] = fs.readFileSync(file).toString().trim().split('\n');
let [h,m] = time.split(' ').map(Number);
lt = parseInt(lt);
h = Math.floor((h*60+m+lt)/60);
m = (h*60+m+lt) % 60;
if(h>=24) {
h -= 24;
}
console.log(h,m);
### 참고한 블로그
https://ggcoding.tistory.com/66
#2480 (주사위 세개)
solution1_array.
const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : __dirname+'/input.txt';
let dice = fs.readFileSync(file).toString().trim().split(' ');
const result = {};
dice.forEach((x)=>{
result[x] = (result[x] || 0) + 1;
})
let same = Object.keys(result).find(key => result[key] >= 2)
let cnt = Object.keys(result).length;
if(cnt == 1) {
prize = 10000 + same * 1000;
} else if(cnt == 2) {
prize = 1000 + same * 100;
} else {
prize = Math.max.apply(null, dice) * 100;
}
console.log(prize);
배열을 활용해서 소스를 작성했다.
배열(dice)에서 중복값 개수에 대한 새로운 배열(result)을 만들고,
result 배열 안에서 조건으로 중복개수를 추출해냈다.
* 근데 아무도 이렇게 안한 거 같다..허헣
solution2_조건.
const fs = require('fs');
const file = process.platform === 'linux' ? '/dev/stdin' : __dirname+'/input.txt';
let dice = fs.readFileSync(file).toString().trim().split(' ').map(Number);
const a = dice[0];
const b = dice[1];
const c = dice[2];
let prize, maxNum = 0;
if (a === b && a === c) {
prize = 10000 + a * 1000;
} else if(a === b || a === c || b === c) {
if(a === b || a === c) {
prize = 1000 + a * 100;
} else {
prize = 1000 + b * 100;
}
} else {
prize = Math.max(...dice)*100;
}
console.log(prize);
### 참고한 블로그(배열)
https://hianna.tistory.com/459
https://codechacha.com/ko/javascript-find-key-by-value/
https://codechacha.com/ko/javascript-get-min-max-in-array/
https://velog.io/@rkio/%EB%B0%B1%EC%A4%80-Javascript-2480
'ALGORITHM > BOJ' 카테고리의 다른 글
[백준_javascript] 반복문(25314, 15552, 11021) (0) | 2024.07.29 |
---|---|
[백준_javascript] 반복문(2739, 10950, 8393, 25304) (0) | 2024.07.28 |
[백준_javascript] 조건문(14681) (0) | 2024.07.26 |
[백준_javascript] 조건문(1330, 9498, 2753) (0) | 2024.07.26 |
[백준_javascript] 입출력과 사칙연산(10171, 10172) (0) | 2024.07.26 |