Notice
Recent Posts
Recent Comments
Link
관리 메뉴

윤일무이

[JavaScript] 구름톤 챌린지 1주차 코딩테스트 : 운동 중독 플레이어 본문

⚙️ 코딩테스트

[JavaScript] 구름톤 챌린지 1주차 코딩테스트 : 운동 중독 플레이어

썸머몽 2023. 8. 16. 10:38
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