본문 바로가기
학부공부/Java_Basic

Chapter 2. Elementary Programming[Java Basic]

by sonpang 2021. 11. 5.
반응형

2.A - 시간,분,초

Time Limit: 1s Memory Limit: 128MB

 

DESCRIPTION

입력받은 초를 시간, 분, 초로 나누어 출력하는 프로그램을 작성하세요.

 

INPUT

* Line 1 : 초를 나타내는 정수 (0~86,399)

 

OUTPUT

* Line 1 : 시간, 분, 초를 공백으로 구분해서 출력

 

SAMPLE INPUT

2015

SAMPLE OUTPUT

0 33 35

 

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
	    Scanner input = new Scanner(System.in);
        int hour, min, sec;
        sec = input.nextInt();
        min = sec / 60;
        hour = min / 60;
        sec = sec % 60;
        min = min % 60;
	    System.out.println(hour + " " + min + " "  + sec);
    }
}

 

 

2.B - 원통의 부피

Time Limit: 1s Memory Limit: 128MB

 

DESCRIPTION

원통의 반지름 R과 길이 L를 입력받아 밑면의 넓이 A와 원통의 부피 V를 구하는 프로그램을 작성하세요. 넓이 A와 부피 V는 다음 공식을 통해서 구합니다.

Write a program that reads in the radius R and length L of a cylinder and computes the area A and volume V using the following formulas:

 

A = R * R * 3.14159

V = A * L

 

INPUT

* Line 1 : 실수 R (1~1,000)

* Line 2 : 실수 L (1~1,000)

 

OUTPUT

* Line 1 : A (소수점 첫째자리 아래는 버림, 예: 11.213의 경우 11.2로 출력, 11.0의 경우 11.0로 출력)

* Line 2 : V (소수점 첫째자리 아래는 버림, 예: 11.213의 경우 11.2로 출력, 11.0의 경우 11.0로 출력)

 

SAMPLE INPUT

5.5

12

 

SAMPLE OUTPUT

95.0

1140.3

 

HINT

소수점 한자리까지 출력 System.out.printf("%.1f\n", 0.6789);

float 대신 double , int 대신 long 사용

 

import java.util.Scanner;
import java.lang.Math;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double r = input.nextDouble();
        double l = input.nextDouble();
        double a = r * r * 3.14159;
        double v = a * l;
        System.out.printf("%.1f\n%.1f", Math.floor(a * 10)/10.0, Math.floor(v * 10)/10.0);
    }
}

Wrong Answer
System.out.println((int)(r * r * 3.14159 * 10)/10.0 + " " + (int)((r * r * 3.14159) * l * 10)/10.0);
System.out.println((long)(r * r * 3.14159 * 10)/10.0 + " " + (long)((r * r * 3.14159) * l * 10)/10.0);
Presentation Error
System.out.printf("%.1f %.1f", Math.floor(a * 10)/10.0, Math.floor(v * 10)/10.0);

 

2.C - 미터를 피트와 인치로

Time Limit: 1s Memory Limit: 128MB

 

DESCRIPTION

미터 M을 입력받아 인치 I로 변환하고 인치 I를 피트 F로 변환하고, 피트 F의 정수부분을 출력하고 피트 F의 소수부분을 인치 I로 변환하는 프로그램을 작성하세요. 1 미터는 3.2808 피트이고, 1 미터는 39.3701 인치 입니다. 그리고 1피트는 정확히 12인치 입니다.

Write a program that reads a number in meters M, converts it to feet F and Inches I. One meter is 3.2808 feet, and one meter is 39.3701 inches.

 

INPUT

* Line 1 : 단일 실수 M (0~1,000)

 

OUTPUT

* Line 1 : 단일 정수 F

* Line 2 : 단일 정수 I (0 ≤ I < 12, 소수점은 버림)

 

SAMPLE INPUT

1000

 

SAMPLE OUTPUT

3280

10

 

HINT

http://www.thecalculatorsite.com/conversions/common/meters-to-feet-inches.php

계산시 feet를 사용해서 계산하는 것은 부정확한 답을 내기 쉽습니다. inch를 사용해서 계산하는걸 추천합니다.

 

import java.util.Scanner;
import java.lang.Math;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double m = input.nextDouble();
        double i = m * 39.3701;
        double f = i / 12;
        System.out.println((int)f);
        System.out.println((int)((f-(int)f)*12));
    }
}
반응형

2.D - 정수의 각 자리 숫자들의 합계

Time Limit: 1s Memory Limit: 128MB

 

DESCRIPTION

정수 N (0~1,000)를 표현하는 각 자리의 숫자들의 합계를 구하는 프로그램을 작성하세요. 예를 들어 932 정수의 각 자리 숫자들의 합계는 9+3+2=14 입니다.

Write a program that reads an integer N between 0 and 1000 and adds all the digits in the integer. For example, if an integer is 932, the sum of all its digits is 14.

 

INPUT

* Line 1 : 단일 정수 N (0~1,000)

 

OUTPUT

* Line 1 : 단일 정수 (각 자리의 숫자를 더한 값)

 

SAMPLE INPUT

932

 

SAMPLE OUTPUT

14

 

HINT

Use the % operator to extract digits, and use the / operator to remove the extracted digit. For instance, 932 % 10 = 2 and 932 / 10 = 93.

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int n = input.nextInt(), sum = 0;
        while(n != 0){
            sum += n % 10;
            n/=10;
        }
        System.out.println(sum);
    }
}

 

2.E - 건강: BMI 계산

Time Limit: 1s Memory Limit: 128MB

 

DESCRIPTION

Body Mass Index (BMI)는 몸무게를 기반으로 하는 건강 측성 수치입니다. BMI를 측정하는 방법은 당신의 몸무게(kg)을 키(m)의 제곱으로 나누면 됩니다. 몸무게 W(pounds)와 키 H(inches)를 입력으로 받아 BMI를 구하는 프로그램을 작성하세요. 1 pound는 0.45359237 kg이고 1 inch는 0.0254 meters 입니다.

Body Mass Index (BMI) is a measure of health on weight. It can be calculated by taking your weight in kilograms and dividing by the square of your height in meters. Write a program that prompts the user to enter a weight W in pounds and height H in inches and displays the BMI. Note that one pound is 0.45359237 kilograms and one inch is 0.0254 meters.

 

INPUT

* Line 1 : 실수 W (50~200)

* Line 2 : 실수 H (10~100)

 

OUTPUT

* Line 1 : 실수 BMI (소수점 둘째자리 아래는 버림, 예: 11.213의 경우 11.21로 출력, 11.20의 경우 11.20로 출력)

 

SAMPLE INPUT

95.5

50

 

SAMPLE OUTPUT

26.85

 

HINT

소수점 한자리까지 출력 System.out.printf("%.1f\n", 0.6789);

 

import java.util.Scanner;
import java.lang.Math;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        double w = input.nextDouble() * 0.45359237;
        double h = input.nextDouble() * 0.0254;
        double bmi = w / (h * h);
        System.out.println(Math.floor(bmi * 100)/100.0);
    }
}

 

2.F - 기하: 삼각형의 넓이

Time Limit: 1s Memory Limit: 128MB

 

DESCRIPTION

삼각형을 이루는 3개의 점 (x1, y1), (x2, y2), (x3, y3) 를 입력받아, 그 넓이를 계산하는 프로그램을 작성하세요. 삼각형의 넓이를 구하는 공식은 다음과 같습니다.

Write a program that prompts the user to enter three points (x1, y1), (x2, y2), (x3, y3) of a triangle and displays its area. The formula for computing the area of a triangle is

 

s = (side1 + side2 + side3)/2

area = sqrt(s(s - side1)(s - side2)(s - side3))

 

INPUT

* Line 1 : 첫번째 점의 좌표 x y 두번째 점의 좌표 x y 세번째 점의 좌표 x y

(각 좌표의 x y는 각각 절대값이 100보다 작은 실수이며 공백으로 구분됨)

 

OUTPUT

* Line 1 : 삼각형의 넓이를 나타내는 실수 (소수점 첫째자리 아래는 버림, 예: 11.213의 경우 11.2로 출력, 11.0의 경우 11.0로 출력)

 

SAMPLE INPUT

1.5 -3.4

4.6 5

9.5 –3.4

 

SAMPLE OUTPUT

33.6

 

HINT

소수점 한자리까지 출력 System.out.printf("%.1f\n", 0.6789);

import java.util.Scanner;
import java.lang.Math;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Double x1 = input.nextDouble(), y1 = input.nextDouble();
        Double x2 = input.nextDouble(), y2 = input.nextDouble();
        Double x3 = input.nextDouble(), y3 = input.nextDouble();
        Double side1 = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
        Double side2 = Math.sqrt(Math.pow(x2 - x3, 2) + Math.pow(y2 - y3, 2));
        Double side3 = Math.sqrt(Math.pow(x3 - x1, 2) + Math.pow(y3 - y1, 2));
        Double s = (side1 + side2 + side3) / 2;
        Double area = Math.sqrt(s * (s - side1) * (s - side2) * (s - side3));
        System.out.println(Math.floor(area * 10) / 10.0);
    }
}

 

2.G - 금융: 월복리

Time Limit: 1s Memory Limit: 128MB

 

DESCRIPTION

당신은 연이율 5%를 제공하는 계좌에 매월 $100 씩 납입하고 있습니다. 연이율 5%을 월이율로 변환하면 0.05/12 = 0.00417 가 됩니다. 한달이 지난 후에 계좌의 잔액은 다음과 같습니다.

Suppose you save $100 each month into a savings account with the annual interest rate 5%. Thus, the monthly interest rate is 0.05/12 = 0.00417. After the first month, the value in the account becomes

100 * (1 + 0.00417) = 100.417

 

두달이 지난 후에 계좌의 잔액은 다음과 같습니다.

After the second month, the value in the account becomes

(100 + 100.417) * (1 + 0.00417) = 201.252

 

세달이 지난 후에 계좌의 잔액은 다음과 같습니다.

After the third month, the value in the account becomes

(100 + 201.252) * (1 + 0.00417) = 302.507 and so on.

 

매달 납입하는 금액을 입력으로 받아 여섯달이 지난후에 계좌의 잔액이 얼마나 되는지 계산하는 프로그램을 작성하세요.

Write a program that prompts the user to enter a monthly saving amount and displays the account value after the sixth month.

 

INPUT

* Line 1 : 매달 입금하는 금액을 나타내는 정수 (1~1,000)

 

OUTPUT

* Line 1 : 6달 후에 금액을 나타내는 실수 (소수점 첫째자리 아래는 버림, 예: 11.213의 경우 11.2로 출력, 11.0의 경우 11.0로 출력)

 

SAMPLE INPUT

100

 

SAMPLE OUTPUT

608.8

 

HINT

소수점 한자리까지 출력 System.out.printf("%.1f\n", 0.6789);

 

import java.util.Scanner;
import java.lang.Math;
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int money = input.nextInt();
        double i, sum = 0;
        for(i = 0; i < 6; i++){
            sum += money;
            sum *= 1.00417;
        }
        System.out.println(Math.floor(sum * 10)/10.0);
    }
}

 

반응형

댓글