본문 바로가기
Algorithm

[구현/수학] 백준 2908 상수 - Python, Java

by jangThang 2022. 1. 28.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    2908번: 상수

    상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     숫자를 거꾸로 변환하고 크기 비교하는 문제입니다.

     

    2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학

     

    [Algorithm] 단골 1번 문제, 구현 / 수학

    1. 구현  단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하여 해결할

    star7sss.tistory.com

     숫자만 거꾸로 변환하면 쉬운 문제입니다. 다만 그 방법이 다소 귀찮습니다. 단순히 123라는 숫자를 거꾸로 변환하려면 1의 자리부터 떼내서 옮겨야 합니다.

     

     

    def reverseNumber(N):
        res = 0
        while N != 0:
            res *= 10 #자릿수 올려주기
            
            tmp = N%10 #1의 자리
            res += tmp
            
            N //= 10
        return res

     복잡한 과정은 아니지만, 번잡합니다...

     

     

     

    3. 코드

    A, B = input().split()
    A = int(A[::-1])
    B = int(B[::-1])
    
    if A > B:
        print(A)
    else:
        print(B)

     String 문자열의 특성을 이용하면 조금 더 쉽게 풀 수 있습니다. A[::-1]은 문자열 A를 거꾸로 바꿔줍니다. 리스트 슬라이싱을 이용하면 됩니다.

     이후, 문자열을 다시 정수형(int)로 바꿔준다음 비교하면 됩니다.

     


     

    import java.util.Scanner;
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		String a = sc.next();
    		String b = sc.next();
    		int rA = 0;
    		int rB = 0;
    
    		int tmp = 1;
    		for(int i = 0; i < a.length(); i++) {
    			rA += (Integer.parseInt(a.substring(i, i+1)) * tmp);
    			tmp *= 10;
    		}
    		tmp = 1;
    		
    		for(int i = 0; i < b.length(); i++) {
    			rB += (Integer.parseInt(b.substring(i, i+1)) * tmp);
    			tmp *= 10;
    		}
    		
    		System.out.println( (rA > rB) ? rA : rB );
    		sc.close();
    	}
    }

     

    반응형

    댓글