본문 바로가기
문제풀기/구름톤 챌린지

구름톤 챌린지 1주 Day1 - 운동 중독 플레이어

by project100 2023. 8. 16.

운동 중독 플레이어 (Java)

 

제출한 답 :

import java.io.*;
import java.util.StringTokenizer;

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());
		
		int rm = (int) (w*(1+(double)r/30));
		
  System.out.println(rm);
	}
}

구름톤 챌린지를 일찍 알게 되었다면 좋았을텐데

하루 늦게 알아서 문제풀이가 먼저 제공되어 블록을 받지 못해서 아쉽다.

 

솔직히 다른 코딩테스트들은 왜 이런 방식으로 되어 있는지 설명도 없이 답만 주기 때문에 공부하기 어려운데

구름톤 챌린지를 해설지에 개념과 문제 풀이, 계산하는 방법을 상세하게 풀어서 설명해 주어 너무 좋았다. 

나한테 꼭 필요한 해설지!!

 

 

문제 풀이는 scanner를 사용하여서 간단한 문제의 경우에는 scanner를 사용하는 것도 나쁘지 않은 것 같다. 

하지만 나는 buffer를 연습하기로 하였기 때문에 쭉 buffer를 사용할 예정!

 

 

[Java] float과 double의 차이는 무엇일까?

float vs double의 차이는? float과 double 모두 실수를 표현하기 위해 사용하는 자료형이라는 것은 알고 있을 것 입니다. 하지만 정확한 차이가 무엇이냐고 물어본다면 대답하기가 쉽지 않습니다...(애

devlog-wjdrbs96.tistory.com

문제에서 소수점을 버리기 때문에 형변환을 시켜 주어야 하는 부분이 있는데

왜 double을 써야 하는지에 대해서는 알려주지 않아서 조금 아쉬웠다.

너무 기본이라서 그런건가? 따로 공부해야지 뭐...

해설지에서는 출력하는 부분에서 바로 형변환을 시켜서 해주었다. 이런 방법이!

문제를 꼼꼼하게 읽어서 고려해야 할 부분이 있다면 처리해 주자! 

 

 

문제 풀이

필요한 개념
  • 수학
  • Scanner
분석

문제의 내용은 길지만, 실제로 지문에서 필요한 부분은 수식입니다. W와 R을 입력받은 뒤, 해당 값을 수식에 넣어 계산 결과를 출력하는 것이 목표입니다. 소수점 이하 값을 버림해야 한다는 점도 고려해야 합니다.

데이터 입력

자바로 데이터를 입력하는 방법은 다양합니다. 구름톤 챌린지에서는 Scanner를 사용하여 데이터 입력을 받으려고 합니다.

Scanner 를 사용하기 위해서는 우선 Scanner 모듈을 불러와야 합니다.

import java.util.Scanner;

Scanner 모듈로 입력을 받는 가장 일반적인 코드는 다음과 같습니다.

Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();

이렇게 되면 number 변수에 사용자 입력이 할당됩니다.

중요한 것은 입력 값의 기본 자료형이 문자열 이기 때문에 자료형을 맞춰주는 작업이 필요합니다.

정수인 경우 nextInt()로, 문자열인 경우 nextLine() 으로 할당을 받아주면 좋습니다.

계산하기

데이터 입력을 모두 받으면, 문제에 주어진 대로 계산을 하면 됩니다. 다만 소수점을 버리기 때문에 정수로 바꿔주는 작업도 필요합니다.

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);  // 입력을 받기 위해 Scanner 객체 생성

        // 두 숫자를 입력 받기
        int W = sc.nextInt();
        int R = sc.nextInt();

        // 연산 실행 후 결과 출력
        System.out.println((int)(W * (1 + (double)R / 30)));
    }
}