728x90
문제
근력 운동을 할 때, 1회에 최대한으로 들 수 있는 무게를 1RM 이라고 한다. 본인의 1RM이 얼마나 되는지를 알아야 효율적인 운동 방식을 고를 수 있어 IRM을 측정하는 것은 무척 중요하다. 그러나 무작정 무거운 무게를 들어서 측정하는 방식은 다칠 위험이 크므로, 보통은 다양한 공식을 사용해서 1RM을 추정한다. 최대 무게가 아닌 적당한 무게를 몇 번 반복해 들었나를 가지고 내가 한 번에 들 수 있는 최대 무게를 추정하는 식이다. 이번 문제에서는 아래와 같은 공식을 사용한다. W는 무게, R은 반복 횟수를 의미한다. IRM=W x (1+ R/30) 최근에 운동을 시작한 플레이어는 본인의 운동 기록을 바탕으로 1 RM을 계산하려고 한다. 플레이어가 스쿼트 한 세트에서 들어올린 무게와 반복 횟수가 주어졌을 때, 플레이어의 1RM을 소수점 이하의 값을 버린 뒤 출력하시오. 플레이어가 들 수 있는 무게는 무한히 크다고 가정한다.
입력
첫째 줄에 플레이어가 스쿼트 한 세트에서 들어올린 무게 M>와 반복 횟수 R이 공백을 두고 주어진다.
- 1 ≤ W ≤ 1000000
- 1≤ R ≤100
- 입력에서 주어지는 모든 수는 정수이다.
출력
플레이어의 1RM을 소수점 이하의 값을 버린 뒤 출력한다.
제출 코드
const readline = require('readline');
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input;
rl.on('line', (line) => {
input = line;
rl.close();
});
rl.on('close', () => {
const [w,r] = input.split(" ").map(Number);
console.log(Math.floor(w*(1+r/30)));
})
배운점
- readline 모듈은 처음이라 입출력을 어떻게 나누면 좋을지 고민했다.
- 나는 소수점을 버리는 메서드로 floor를 사용했는데 답지에는 trunc를 사용해서 이 두 메서드의 차이점에 대해 알아보았다.
- Math.floor vs Math.trunc
ex)Math.floor() console.log(Math.floor(4.9)); // 4 console.log(Math.floor(-4.9)); // -5
ex)Math.trunc() console.log(Math.trunc(4.9)); // 4 console.log(Math.trunc(-4.9)); // -4
- trunc는 내림을 하더라도 0으로 향하는 반면 floor는 무조건 아래만 향해서 내림한다.
느낀점
1일차는 단순 구현이라 크게 어려운 건 없었다.
728x90
'코테 > 구름톤 챌린지' 카테고리의 다른 글
[ 구름톤 챌린지 ] 문자열 나누기 (0) | 2023.08.21 |
---|---|
[ 구름톤 챌린지 ] 이진수 정렬 (0) | 2023.08.20 |
[ 구름톤 챌린지 ] 완벽한 햄버거 만들기 (0) | 2023.08.20 |
[ 구름톤 챌린지 ] 합 계산기 (0) | 2023.08.20 |
[ 구름톤 챌린지 ] 프로젝트 매니징 (0) | 2023.08.20 |