happy coding
[java] 구름톤 챌린지 1일차. 운동 중독 플레이어 본문
문제
근력 운동을 할 때, 1회에 최대한으로 들 수 있는 무게를 1RM 이라고 한다. 본인의 1RM 이 얼마나 되는지를 알아야 효율적인 운동 방식을 고를 수 있어 을 측정하는 것은 무척 중요하다. 그러나 무작정 무거운 무게를 들어서 측정하는 방식은 다칠 위험이 크므로, 보통은 다양한 공식을 사용해서 1RM 을 추정한다. 최대 무게가 아닌 적당한 무게를 몇 번 반복해 들었나를 가지고 내가 한 번에 들 수 있는 최대 무게를 추정하는 식이다. 이번 문제에서는 아래와 같은 공식을 사용한다. W 는무게, R 은 반복 횟수를 의미한다.
최근에 운동을 시작한 플레이어는 본인의 운동 기록을 바탕으로 1RM을 계산하려고 한다. 플레이어가 스쿼트 한 세트에서 들어올린 무게와 반복 횟수가 주어졌을 때, 플레이어의 1RM을 소수점 이하의 값을 버린 뒤 출력하시오. 플레이어가 들 수 있는 무게는 무한히 크다고 가정한다.
입력
첫째 줄에 플레이어가 스쿼트 한 세트에서 들어올린 무게 와 반복 횟수 이 공백을 두고 주어진다.
- 1 <= W <= 1,000,000
- 1 <= R <= 100
import java.io.*;
import java.util.*;
import java.math.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int W = Integer.parseInt(st.nextToken());
int R = Integer.parseInt(st.nextToken());
double output = W * (1.0 + R/30.0);
System.out.println((int)Math.floor(output));
}
}
주어진 계산 공식을 그대로 output에 넣은 다음, 소수점을 버려 출력하도록 했다.
테스트케이스 여러 번 돌려서 마음에 드는 출력값을 얻어냈다. 하지만 이렇게 보니까 좀 조잡해 보이는 내 코드.. 자료형 변환과 문제를 좀 더 빨리 이해하도록 다음부턴 노력해야겠고, Math.floor 사용은 처음인 것 같다.
Math.floor
주어진 숫자보다 작거나 같은 가장 큰 정수를 반환하는 함수이다. 소수점 아래의 값은 버린다. 이 함수는 자바에서 제공하는 'Math' 클래스의 정적 메서드로 제공된다.
double value = 3.14159; double floorValue = Math.floor(value); System.out.println(floorValue); // 출력: 3.0
'coding study' 카테고리의 다른 글
[java] 구름톤 챌린지 3일차. 합 계산기 (0) | 2023.08.18 |
---|---|
[java] 구름톤 챌린지 2일차. 프로젝트 매니징 (0) | 2023.08.15 |
[java] array (0) | 2023.07.26 |
[java] list (0) | 2023.07.24 |
[java] StringBuilder (0) | 2023.07.24 |
Comments