GrowMe

[PS]백준 1550번 본문

Algorithm Thinking

[PS]백준 1550번

오늘도 타는중 2022. 6. 22. 19:23

💡백준 1550번 : 16진수를 입력받아 10진수로 출력하기

*Try 1

import java.util.*;

public class B5_1550 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        String[] tmp = {"A","B","C","D","E","F"};
        int[] tmp2 = {10,11,12,13,14,15};
        String[] arr = str.split("");
        for(int i=0; i<arr.length; i++){
            if(arr[i] == tmp[0] || arr[i] == tmp[1] || arr[i] == tmp[2]
                    || arr[i] == tmp[3] || arr[i] == tmp[4] || arr[i] == tmp[5]){
                System.out.println(tmp2[i]);
            }else if(arr[i] == "0" || arr[i] == "1" || arr[i] == "2" || arr[i] == "3" ||
                    arr[i] == "4" || arr[i] == "5" || arr[i] == "6" || arr[i] == "7" ||
                    arr[i] == "8" || arr[i] == "9"){
                System.out.println(Integer.parseInt(arr[i]));
            }
        }
    }
}

*Search

16진수가 정확히 뭐고 10진수로는 어떻게 바꾸지?

 

—> 위 방법을 토대로, 배열을 활용해보자.

*Try 2

import java.util.*;

public class B5_1550 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        char[] arr = str.toCharArray();
        sc.close();

        int[] num = {0,0,0,0,0,0};
        int result = 0;
        char[] tmp = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

        for(int i=0; i < arr.length; i++){
            switch(arr[i]){
                case '0':
                    num[i] = 0 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case '1':
                    num[i] = 1 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case '2':
                    num[i] = 2 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case '3':
                    num[i] = 3 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case '4':
                    num[i] = 4 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case '5':
                    num[i] = 5 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case '6':
                    num[i] = 6 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case '7':
                    num[i] = 7 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case '8':
                    num[i] = 8 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case '9':
                    num[i] = 9 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case 'A':
                    num[i] = 10 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case 'B':
                    num[i] = 11 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case 'C':
                    num[i] = 12 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case 'D':
                    num[i] = 13 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case 'E':
                    num[i] = 14 * (int)Math.pow(16, arr.length-(i+1));
                    break;
                case 'F':
                    num[i] = 15 * (int)Math.pow(16, arr.length-(i+1));
                    break;
            }
        }

        for(int i = 0; i< num.length; i++){
            result = result + num[i];
        }
        System.out.println(result);
    }
}

Success Solving the Problem!


*후기

두번째 풀이에서 사용했던 Switch문, 배열, 반복문, toCharArray() 등의 개념이 아직 머릿속에 완벽히 있지 않아, 다시 찾아보고 적용하는 과정에서 생각보다 너무 오래걸렸다. 문제풀이를 진행하며, 개념이 단단해져 감을 느끼며 풀이에 성공하니 상당한 뿌듯함을 느낄 수 있었다. 다음 문제풀이도 화이팅! —> 찾아보니 Integer.parseInt() 메서드에 두번째 인자로 진수를 줄 수 있었다 ㅠㅠ... Interger.parseInt() 메서드를 16진수의 경우만 스스로 구현해보았다는 셈 치고, 만족하자!

*Insight

  • 16진수의 이해
  • Switch문의 이해 및 활용
  • 반복문의 활용
  • toCharArray()의 활용

'Algorithm Thinking' 카테고리의 다른 글

[PS] 짐 나르기 문제  (0) 2022.06.22
[PS] 소수 출력  (0) 2022.06.22
[PS] 백준 2338번  (0) 2022.06.22
[PS] 백준 1271번  (0) 2022.06.22
[PS]백준-1000  (0) 2022.06.14
Comments