Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Segmentation with Paging
- 프로세스 불연속 할당
- 메모리의 불연속적 할당
- 알고리즘
- 자바 알고리즘
- linux
- Page Table의 구현
- Allocation of Physical Memory
- spring
- 리눅스
- 웹 프로그래밍
- 자바 문제풀이
- 프로세스 동기화
- Inverted Page Table
- 스프링부트
- CS
- springboot
- 프로세스 할당
- 코드스테이츠 백엔드 과정 39기
- 운영체제
- 스프링
- Effective Access Time
- jpa
- 2단계 Page Table
- 문제풀이
- 다단계 페이지 테이블
- 메모리 관리
- Shared Page
- 웹개발
- annotation
Archives
- Today
- Total
GrowMe
[PS]백준 1550번 본문
💡백준 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