문제
내가 작성한 정답
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
class Solution {
public int[] solution(String my_string) {
List<Integer> a = new ArrayList<>();
for (char c : my_string.toCharArray()) {
if (Character.isDigit(c)) {
a.add(Character.getNumericValue(c));
}
}
Collections.sort(a);
int[] answer = new int[a.size()];
for (int i = 0; i < a.size(); i++) {
answer[i] = a.get(i);
}
return answer;
}
}
다른 사람들이 작성한 정답
streamAPI
import java.util.*;
class Solution {
public int[] solution(String myString) {
return Arrays.stream(myString.replaceAll("[A-Z|a-z]", "").split(""))
.sorted()
.mapToInt(Integer::parseInt)
.toArray();
}
}
아스키코드
import java.util.*;
class Solution {
public int[] solution(String my_string) {
my_string = my_string.replaceAll("[a-z]","");
int[] answer = new int[my_string.length()];
for(int i =0; i<my_string.length(); i++){
// 문자가 숫자일 경우, ASCII 코드에서 '0'의 값을 빼면 해당 숫자의 정수 값이 된다.
// 숨어있는 숫자의 덧셈 (1)문제 참고
answer[i] = my_string.charAt(i) - '0';
}
Arrays.sort(answer);
return answer;
}
}
ASCII와 유니코드
- ASCII ASCII(American Standard Code for Information Interchange)는 7비트 문자 인코딩으로, 총 128개의 문자(영문 대소문자, 숫자, 특수 문자 등)를 포함한다. 예를 들어, 숫자 '0'의 ASCII 값은 48, 'A'는 65, 'a'는 97이다.
- 유니코드 유니코드는 ASCII의 확장을 포함하여 전 세계의 다양한 문자를 표현할 수 있도록 설계된 문자 인코딩 시스템이다. Java에서 char는 유니코드를 기반으로 하며, 0에서 65535 사이의 값을 가질 수 있다. 이는 ASCII 문자 집합의 모든 문자를 포함한다.
- char와 ASCII 코드 Java에서 char 타입의 변수를 정수로 취급할 수 있다.
public class CharExample {
public static void main(String[] args) {
char c = 'A'; // 'A'는 ASCII 값 65
int asciiValue = c; // char를 int로 자동 변환
System.out.println("ASCII value of " + c + " is: " + asciiValue);
char digit = '5'; // '5'는 ASCII 값 53
int numericValue = digit - '0'; // '5'에서 '0'을 빼면 5가 됨
System.out.println("Numeric value of " + digit + " is: " + numericValue);
}
}
char는 문자 자체를 나타내는 데이터 타입이지만, 내부적으로는 해당 문자의 ASCII 또는 유니코드 값으로 표현된다.
Share article