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
- 웹개발
- 메모리의 불연속적 할당
- 스프링부트
- 프로세스 동기화
- annotation
- 프로세스 할당
- 자바 알고리즘
- linux
- 메모리 관리
- Segmentation with Paging
- Shared Page
- Page Table의 구현
- spring
- Allocation of Physical Memory
- Effective Access Time
- CS
- Inverted Page Table
- 문제풀이
- 리눅스
- jpa
- 운영체제
- 웹 프로그래밍
- 2단계 Page Table
- 스프링
- 프로세스 불연속 할당
- 알고리즘
- springboot
- 코드스테이츠 백엔드 과정 39기
- 자바 문제풀이
- 다단계 페이지 테이블
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