까잉이의 개발노트

[ 백준 2908 ] 상수 JAVA(자바) 문제풀이 본문

개발문제풀이

[ 백준 2908 ] 상수 JAVA(자바) 문제풀이

까잉이 2022. 7. 11. 18:14

상수는 수학을 못 한다고 하지만...사실 이걸 거꾸로 읽은 다음에 큰 수를 말하는 정도면 천재 아닌가..?🤔

암튼 나는 또 구구절절한 코드로 풀었는데..다 풀고 나서 엄청 간단하게 푼 분의 코드를 봤다..

나도 코드를 짧게 쓰고 싶다ㅠㅠ (개발 공부하자 까잉아...)


풀이순서

1. 입력받은 두 수를 for문을 통해 int 배열에 넣는데 각 10을 나눈 나머지로 넣는다

    그러면 일의 자리 수 부터 배열에 들어가기 때문에 숫자가 뒤집어진 것 같이 넣어진다

    ex) 734 → {4, 3, 7} 

2. 배열을 다시 int로 변환해야하기 때문에 num1, num2를 0으로 초기화를 해준다

3. for문을 통해 각 num1, num2를 10을 곱한 다음 배열에 있는 값을 더해준다.

    그러면 배열의 순서대로 숫자가 출력된다

    ex) {4, 3, 7} → 437

4. num1과 num2를 비교해 수가 큰걸 출력한다

 

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int num1 = sc.nextInt();
		int num2 = sc.nextInt();

		int[] arr1 = new int[3];
		int[] arr2 = new int[3];

		for(int i = 0; i < 3; i++) {
			arr1[i] = num1 % 10;
			arr2[i] = num2 % 10;

			num1 /= 10;
			num2 /= 10;
		}

		num1 = 0;
		num2 = 0;
		for(int i = 0; i < 3; i++) {
			num1 *= 10;
			num2 *= 10;

			num1 += arr1[i];
			num2 += arr2[i];
		}

		if(num1 > num2) {
			System.out.println(num1);
		}else {
			System.out.println(num2);
		}

		
	}

}

 

나의 풀이는 이렇게 구구절절 한데

풀고나서 다른 사람의 풀이를 보니까 이러했다


풀이순서

1. StringBuilder를 선언해서 .append()로 입력받은 값을 추가한다

2. .reverse()해서 값을 반대로 뒤집어 준다

3. int로 파싱한 다음 값을 삼항연산자로 비교해 출력한다

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {		
		Scanner s = new Scanner(System.in);

		int a = s.nextInt();
		int b= s.nextInt();
		s.close();

		a = Integer.parseInt(new StringBuilder().append(a).reverse().toString());
		b = Integer.parseInt(new StringBuilder().append(b).reverse().toString());

		System.out.print(a>b?a:b);
	}

}

이렇게나 깔끔하게 풀 수 있다니..

StringBuilder에 .reverse()라는 함수가 있는지도 처음 알았다

역시 아는 만큼 짧은 코드를 짤 수 있나보다👍

Comments