본문 바로가기
Problem Solving

[JAVA] [백준 5355] 화성 수학 (pps 5-2)

by tls1107 2021. 7. 18.
728x90
반응형


문제 풀기 전 생각 : 

/*
처음에 c++ 로 풀려고 했는데 문자열을 입력받고 처리하는 과정이 
귀찮아져서 split 기능이 내장된 자바를 사용하기로 했다.
자바로 총 몇번을 입력받을지 스캐너로 입력받고
해당 횟수만큼 반복문을 사용한다.
매 반복마다 한 줄 단위로 문자열을 입력받고
입력받은 문자열을 스플릿 한다.
스플릿 한후 가장 첫번째 문자는 숫자이다. 
이 숫자를 float 타입으로 변환하고
그 다음에 오는 연산자들에 따라서 더하고 빼고 곱한다.
*/

 


import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    int n = Integer.parseInt(s.nextLine());
    for(int i = 0 ; i<n ; i++){
      String str = s.nextLine();
      String[] array = str.split(" ");
      float num = Float.parseFloat(array[0]);
      for(int j = 1 ; j<array.length ; j++){
        if(array[j].equals("@")) num *= 3;
        else if(array[j].equals("%")) num += 5;
        else if(array[j].equals("#")) num -= 7;
      }
      System.out.println(String.format("%.2f",num));
    }
    s.close(); 
  }
}

https://www.acmicpc.net/problem/status/5355

 

5355번 맞은 사람 - 1 페이지

모든 언어 C++17 Java 8 Python 3 C11 PyPy3 C99 C++98 C++11 C++14 Java 8 (OpenJDK) Java 11 C++20 Python 2 PyPy2 Ruby Kotlin (JVM) Kotlin (Native) Cython Swift Text C# 9.0 (.NET) node.js Go Go (gccgo) Java 15 D D (LDC) F# (Mono) PHP Rust 2015 Rust 2018 Pa

www.acmicpc.net


풀 때 어려웠던 점 또는 느낀점 :

 

c++ 로 풀려니까 내장되지 않은 기능들이 많아서 답답했다.

확실히 파이썬이나 자바가 구현된 것들이 많아서 좋은것 같다.

C++로는 어떻게 풀었는지 궁금하다.


개선방안 :

#include <stdio.h>

int main(void) {
	int T;
	scanf("%d", &T);

	for (int i = 0; i < T; i++) {
		double input;
		char oper = 0;

		scanf("%lf", &input);

		while (oper != 10) {
			scanf("%c", &oper);
			if (oper == 32) continue;

			switch (oper)
			{
			case '@':
				input *= 3;
				break;
			case '%':
				input += 5;
				break;
			case '#':
				input -= 7;
				break;
			default:
				break;
			}
		}

		printf("%.2lf\n", input);
	}

	return 0;
}

ASCII 코드 

10 == LF ( Line Feed => 다음 줄로... )

 

아아... 다음 줄로 판별이 생각이 잘 안 나서 

자바로 풀었는데 뒤통수를 한대 맞았다...

아스키 코드의 응용을 좀 더 공부해야겠다.

어떻게 문제를 풀때마다 배워야 할게 늘어난다... ㅎㅎㅎ

728x90
반응형

댓글