728x90
📌 문제
근력 운동을 할 때, 1회에 최대한으로 들 수 있는 무게를 1RM 이라고 한다. 본인의 1RM 이 얼마나 되는지를 알아야 효율적인 운동 방식을 고를 수 있어 을 측정하는 것은 무척 중요하다. 그러나 무작정 무거운 무게를 들어서 측정하는 방식은 다칠 위험이 크므로, 보통은 다양한 공식을 사용해서 1RM 을 추정한다. 최대 무게가 아닌 적당한 무게를 몇 번 반복해 들었나를 가지고 내가 한 번에 들 수 있는 최대 무게를 추정하는 식이다. 이번 문제에서는 아래와 같은 공식을 사용한다. 는 W 무게, R 은 반복 횟수를 의미한다.
1RM = W * (1 + R/30)
최근에 운동을 시작한 플레이어는 본인의 운동 기록을 바탕으로 1RM을 계산하려고 한다. 플레이어가 스쿼트 한 세트에서 들어올린 무게와 반복 횟수가 주어졌을 때, 플레이어의 1RM을 소수점 이하의 값을 버린 뒤 출력하시오. 플레이어가 들 수 있는 무게는 무한히 크다고 가정한다.
📌 입력
첫째 줄에 플레이어가 스쿼트 한 세트에서 들어올린 무게 와 반복 횟수 이 공백을 두고 주어진다.
- 1 <= W <= 1,000,000
- 1 <= R <= 100
📌 출력
플레이어의 1RM을 소수점 이하의 값은 버린 뒤 출력한다.
📌 예제 입출력
📌 풀이
알아야 하는 것
- readline 모듈: 데이터를 입력해서 문자열로 변수를 할당
- 콘솔에서 데이터를 받는다.
- on 메소드에서는 2개의 기능을 수행한다.rl.close() 이벤트를 만나기 전까지 입력을 계속 받는다.
- 입력을 받는 기준은 '줄바꿈'이다. close 이벤트를 만나면 입력이 종료된다.
- readfileSync: 채점용 데이터를 문자열로 읽어온다.
- 데이터의 상태에 따라 뒤에 trim이나 split을 써 데이터를 배열 상태로 받을 수 있다.
- readline에 비해 코드가 간결하지만 직접 데이터를 입력하고 실행할 수 없는 불편함이 있다. (백준 문제 푸는 유형)
구할 것
- 입력값을 받은 후 변수 weight, repeat에 할당했다. 나머지는 문제에서 요구한 1RM을 구하는 공식을 그대로 적용했다. 문제에서 소수점 이하를 버리라고 했으므로 parseInt 또는 Math.floor를 사용하면 된다.
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', () => {
let [weight, repeat] = input.split(" ").map(Number)
console.log(parseInt(weight * (1+repeat/30)));
})
문제를 이해하고 데이터만 어떻게 받을지 정하면 풀 수 있는 아주 기본적인 문제였다.
728x90
'⚙️ 코딩테스트' 카테고리의 다른 글
[JavaScript] 구름톤 챌린지 1주차 코딩테스트 : 합 계산기 (0) | 2023.08.17 |
---|---|
[JavaScript] 구름톤 챌린지 1주차 코딩테스트 : 프로젝트 매니징 (0) | 2023.08.16 |
[JavaScript] 프로그래머스 코딩테스트 레벨 2 : 숫자의 표현 (0) | 2023.08.10 |
[JavaScript] 프로그래머스 코딩테스트 레벨 2 : 게임 맵 최단거리 (0) | 2023.08.08 |
[JavaScript] 백준 코딩테스트 1158. 실버 4 : 요세푸스 문제 (0) | 2023.07.31 |