본문 바로가기
CS/Algorithm

[알고리즘][문자열][2908] 상수

by 별토끼. 2018. 4. 15.
반응형

[알고리즘][문자열][2908] 상수



*문제

https://www.acmicpc.net/problem/2908


* 풀이

숫자를 2개 입력받고 이를 뒤집어 max값을 구한다. 처음에 숫자 입력 갯수가 지정된지 모르고 배열로 풀다가 바꾸는 바람에 코드의 길이가 길어졌다ㅠ다른 코드들을 참고해보니 10으로 나눈 나머지 값으로 쉽게 구현이 가능하다.


또 굳이 pow를 이용하여 값을 계산하지 않더라도 valueof함수를 이용하면 String으로 되어있는 값을 int로 쉽게 바꿀 수 있다. 다음에는 더 짧게 구현해봐야겠다.


* 코드

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
32
33
34
35
36
37
38
39
40
41
42
43
package algorithm_String;
 
import java.util.Scanner;
 
public class q_2908 {
 
    public static void main(String[] args) {
        /*
         * 1. 두 수를 입력받는다.
         * 2. 두 수 모두 역순으로 다시 입력한다.
         * 3. 크기를 비교한다.
         * 4. 출력한다.
         */
        Scanner scan = new Scanner(System.in);
        //입력받은 두 숫자를 자른다 
        String[] line = scan.nextLine().split(" ");
        char[][] tmp_num = new char[line.length][1001];
        int[][] num = new int[line.length][1001];
        
        //나뉜 두 숫자를 하나씩 나눈다.
        for(int i=0;i<line.length;i++) {
            for(int j=0;j<line[i].length();j++) {
                int x = line[i].length()-1-j;
                tmp_num[i][x]=line[i].charAt(j);
                num[i][x]=Character.getNumericValue(tmp_num[i][x]);
            }
        }
        int[] result_num = new int[line.length];
        for(int i=0;i<line.length;i++) {
            for(int j=0;j<line[i].length();j++) {
                result_num[i]+=num[i][j]*Math.pow(10,line[i].length()-1-j);
            }
        }
        int max = result_num[0];
        for(int i=0;i<result_num.length;i++) {
            if(result_num[i]>max) {
                max = result_num[i];
            }
        }
        System.out.println(max);    
    }
}
 
cs


반응형

댓글