Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 화성 수학 (5355) (자바/Java) 본문

알고리즘문제/백준 문제(Java)

[백준] - 화성 수학 (5355) (자바/Java)

luke-king 2024. 5. 14. 17:29

 

 

 

 

문제 : https://www.acmicpc.net/problem/5355

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


 

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();

        for (int i = 0; i < n; i++) {
            String str = sc.nextLine();
            String[] split = str.split(" ");


            double res = Double.parseDouble(split[0]);

            for (int j = 1; j < split.length; j++) {

                if (split[j].equals("@")) {
                    res *= 3;
                } else if (split[j].equals("%")) {
                    res += 5;
                } else if (split[j].equals("#")) {
                    res -= 7;
                }
            }

            System.out.printf("%.2f\n", res);
        }

    }

}

 

이번 문제는 " 화성 수학 " 문제다.

특정한 문자가 들어갔을 때 다른 연산자를 사용하는 것이다.

문제 지문 이해하는데는 큰 어려움이 없을 거라 생각하고 바로 문제 풀이를 해보겠다.

 

1. 입력값을 문자열로 받아 split()함수를 사용해 공백 기준으로 잘라 준다.

 

2. 결과 값은 최종적으로 double 이기에 입력 값 첫 번째는 숫자가 나오므로 split [0] 번을 형변환 해준다.

 

3. 반복문을 통해 @, %, #을 비교한뒤 같은 문자열이 있으면 그 값에 맞게 연산자를 써준다.

 

4. 마지막 출력을 했을때 소수점 2 자릿수만 나오게 하므로 일반 " println " 이 아닌 " printf "를 사용해 소수점 2 자리만 나오게 출력한다.

(줄 바꿈 " \n "이 있는데 줄 바꿈을 해주지 않으면 틀림으로 나오게 된다.)