ALGORITHM/BOJ
[백준_javascript] 조건문(2884, 2525, 2480)
오늘도 코딩하나
2024. 7. 27. 16:18
#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