๐ 1. ๋ฌธ์ ์ค๋ช

๐ก 2. ํ์ด๊ณผ์
์ฒ์์ ์ ๊ทผํ ๋ฐฉ์
1. my_string์ toCharArray()๋ก char ํ์
์ ๋ฐฐ์ด๋ก ๋ณํ
2. for ๋ฌธ์ผ๋ก ๋ฐฐ์ด ์์๋ฅผ ์ํํ๋ฉด์ `Character.isDigit(c)` ๋ฉ์๋๋ก ์์๊ฐ ์ซ์์ด๋ฉด count++
3. 2์์ ๋์จ count ํฌ๊ธฐ๋งํผ์ int ๋ฐฐ์ด์ ์ ์ธํ๋ค.
4. for each๋ฌธ์ผ๋ก ๋ค์ ํ ๋ฒ ๋ฐฐ์ด์ ์ํํ๋ฉด์ `Integer.parseInt(String.valueOf(c));` ๋ก ์ซ์๋ง int ๋ฐฐ์ด์ ์ถ๊ฐ
5. ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
โญ`Character.isDigit()`๋ ์ฃผ์ด์ง ๋ฌธ์๊ฐ ์ซ์(0~9)์ธ์ง ํ์ธํ๋ ์๋ฐ ๋ฉ์๋
ํน์ ๋ฌธ์๊ฐ ์ซ์์ธ์ง ์๋์ง๋ฅผ ํ๋จํ์ฌ, ์ซ์์ด๋ฉด true๋ฅผ ๋ฐํํ๊ณ , ์ซ์๊ฐ ์๋๋ฉด false๋ฅผ ๋ฐํํ๋ค.
โญ `Integer.parseInt(String.valueOf(c));` ๋ฌธ์(char) c๋ฅผ ์ ์(int) ๋ก ๋ณํ ํ๋ ์ฝ๋์ด๋ค.
- `Integer.parseInt()`: ์ด ๋ฉ์๋๋ ๋ฌธ์์ด(String)์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ ์ ์(int)๋ก ๋ณํํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ชจใ ใด์
- `String.valueOf(c)`: ๋จผ์ ์ฃผ์ด์ง ๋ฌธ์(char)๋ฅผ ๋ฌธ์์ด(String)๋ก ๋ณํํ๋ค.
๐จโ๐ป 3. ์ ๋ต์ฝ๋
import java.util.*;
class Solution {
public int[] solution(String my_string) {
char[] arr = my_string.toCharArray();
// ์ซ์์ ๊ฐ์๋ฅผ ์ธ์ด int[] ๋ฐฐ์ด์ ๋ง๋ค๊ธฐ ์ํ ์ค๋น
int count = 0;
for (char c : arr) {
if (Character.isDigit(c)) {
count++;
}
}
// ์ซ์์ ๊ฐ์๋งํผ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ int[] ๋ฐฐ์ด ์์ฑ
int[] answer = new int[count];
int index = 0;
// ์ซ์๋ง answer ๋ฐฐ์ด์ ์ถ๊ฐ
for (char c : arr) {
if (Character.isDigit(c)) {
answer[index++] = Integer.parseInt(String.valueOf(c));
}
}
Arrays.sort(answer);
return answer;
}
}

๋ฌธ์ ๋ฅผ ๋ค์ ์ฝ์ด๋ณด๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ผ๊ณ ๋์ด ์์๋ค.
`Arrays.sort(answer);` ์ถ๊ฐ ํด ์ฃผ๋๊น ํด๊ฒฐ๋จ.

๐๐ป 4. ์ข์์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ฝ๋
๋ด ์ฝ๋๊ฐ ๊ธธ์ด์ง ์ด์ ๋ ArrayList๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐฐ์ด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ์ด๊ธฐ ๋๋ฌธ์ my_string ์์ ์ซ์๊ฐ ๋ช๊ฐ์ธ์ง ๋ชจ๋ฅผ๋๋
์ซ์์ ๊ฐ์๋ฅผ ์นด์ดํธํด์ ๋ฐฐ์ด ํฌ๊ธฐ๋ฅผ ์ง์ ํด์ผ ํ๋ฏ๋ก ์ฝ๋๊ฐ ๊ธธ์ด์ง๋ค.
๋ฐ๋ผ์ ํฌ๊ธฐ๊ฐ ๊ฐ๋ณ์ ์ธ ArrayList๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ ๋๋ Integer.parseInt() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด String.valueOf(c) ๋ก ๋ฌธ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊พผ ๋ค์ ๋ค์ ๋ฌธ์์ด์ ์ ์๊ฐ์ผ๋ก ๋ณํํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด 2ํ ๊ณผ์ ์ ๊ฑฐ์ณ์ ๋ณํ์ด ์ผ์ด๋๋๋ฐ
์๋์ฒ๋ผ ๊ทธ๋ฅ numbers.add( c - '0' ) ์ ํ๋ฉด ๊ณง๋ฐ๋ก ๋ฌธ์๋ฅผ ์ซ์๋ก ๋ณํํ ์ ์๋ค.
c - '0'์ ๋ฌธ์ '3'์์ ๋ฌธ์ '0'์ ๋นผ๋ ๊ฒ์ธ๋ฐ, c๋ฅผ ์ซ์ ํํ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ง์ฝ์ c๊ฐ '3'์ด๋ฉด '3' - '0'์ 3์ด ๋๋ค. ์๋ํ๋ฉด '3'์ ์์คํค ๊ฐ์ 51์ด๊ธฐ ๋๋ฌธ์ด๋ค. '0'์ ์์คํค ๊ฐ์ 48์ด๊ธฐ ๋๋ฌธ์ ์์ฐ์ 3๊ฐ์ ์ป์ผ๋ ค๋ฉด '3' - '0'์ ํด์ค์ผ 51 - 48๋ก ๊ณ์ฐ๋๋ฉฐ ๊ฒฐ๊ณผ๊ฐ 3์ด ๋๋ค.
import java.util.*;
class Solution {
public List<Integer> solution(String my_string) {
List<Integer> numbers = new ArrayList<>();
for (char c : my_string.toCharArray()) {
if (Character.isDigit(c)) {
numbers.add(c - '0'); // ๋ฌธ์ โ ์ซ์๋ก ๋ณํ
}
}
Collections.sort(numbers); // ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
return numbers;
}
}
'Algorithm > JAVAํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ 1. ๋ฌธ์ ์ค๋ช

๐ก 2. ํ์ด๊ณผ์
์ฒ์์ ์ ๊ทผํ ๋ฐฉ์
1. my_string์ toCharArray()๋ก char ํ์
์ ๋ฐฐ์ด๋ก ๋ณํ
2. for ๋ฌธ์ผ๋ก ๋ฐฐ์ด ์์๋ฅผ ์ํํ๋ฉด์ Character.isDigit(c)
๋ฉ์๋๋ก ์์๊ฐ ์ซ์์ด๋ฉด count++
3. 2์์ ๋์จ count ํฌ๊ธฐ๋งํผ์ int ๋ฐฐ์ด์ ์ ์ธํ๋ค.
4. for each๋ฌธ์ผ๋ก ๋ค์ ํ ๋ฒ ๋ฐฐ์ด์ ์ํํ๋ฉด์ Integer.parseInt(String.valueOf(c));
๋ก ์ซ์๋ง int ๋ฐฐ์ด์ ์ถ๊ฐ
5. ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
โญCharacter.isDigit()
๋ ์ฃผ์ด์ง ๋ฌธ์๊ฐ ์ซ์(0~9)์ธ์ง ํ์ธํ๋ ์๋ฐ ๋ฉ์๋
ํน์ ๋ฌธ์๊ฐ ์ซ์์ธ์ง ์๋์ง๋ฅผ ํ๋จํ์ฌ, ์ซ์์ด๋ฉด true๋ฅผ ๋ฐํํ๊ณ , ์ซ์๊ฐ ์๋๋ฉด false๋ฅผ ๋ฐํํ๋ค.
โญ Integer.parseInt(String.valueOf(c));
๋ฌธ์(char) c๋ฅผ ์ ์(int) ๋ก ๋ณํ ํ๋ ์ฝ๋์ด๋ค.
Integer.parseInt()
: ์ด ๋ฉ์๋๋ ๋ฌธ์์ด(String)์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ ์ ์(int)๋ก ๋ณํํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ชจใ ใด์String.valueOf(c)
: ๋จผ์ ์ฃผ์ด์ง ๋ฌธ์(char)๋ฅผ ๋ฌธ์์ด(String)๋ก ๋ณํํ๋ค.
๐จโ๐ป 3. ์ ๋ต์ฝ๋
import java.util.*; class Solution { public int[] solution(String my_string) { char[] arr = my_string.toCharArray(); // ์ซ์์ ๊ฐ์๋ฅผ ์ธ์ด int[] ๋ฐฐ์ด์ ๋ง๋ค๊ธฐ ์ํ ์ค๋น int count = 0; for (char c : arr) { if (Character.isDigit(c)) { count++; } } // ์ซ์์ ๊ฐ์๋งํผ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ int[] ๋ฐฐ์ด ์์ฑ int[] answer = new int[count]; int index = 0; // ์ซ์๋ง answer ๋ฐฐ์ด์ ์ถ๊ฐ for (char c : arr) { if (Character.isDigit(c)) { answer[index++] = Integer.parseInt(String.valueOf(c)); } } Arrays.sort(answer); return answer; } }

๋ฌธ์ ๋ฅผ ๋ค์ ์ฝ์ด๋ณด๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ผ๊ณ ๋์ด ์์๋ค.Arrays.sort(answer);
์ถ๊ฐ ํด ์ฃผ๋๊น ํด๊ฒฐ๋จ.

๐๐ป 4. ์ข์์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ฝ๋
๋ด ์ฝ๋๊ฐ ๊ธธ์ด์ง ์ด์ ๋ ArrayList๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐฐ์ด์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๊ณ ์ ์ด๊ธฐ ๋๋ฌธ์ my_string ์์ ์ซ์๊ฐ ๋ช๊ฐ์ธ์ง ๋ชจ๋ฅผ๋๋
์ซ์์ ๊ฐ์๋ฅผ ์นด์ดํธํด์ ๋ฐฐ์ด ํฌ๊ธฐ๋ฅผ ์ง์ ํด์ผ ํ๋ฏ๋ก ์ฝ๋๊ฐ ๊ธธ์ด์ง๋ค.
๋ฐ๋ผ์ ํฌ๊ธฐ๊ฐ ๊ฐ๋ณ์ ์ธ ArrayList๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ ๋๋ Integer.parseInt() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด String.valueOf(c) ๋ก ๋ฌธ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊พผ ๋ค์ ๋ค์ ๋ฌธ์์ด์ ์ ์๊ฐ์ผ๋ก ๋ณํํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด 2ํ ๊ณผ์ ์ ๊ฑฐ์ณ์ ๋ณํ์ด ์ผ์ด๋๋๋ฐ
์๋์ฒ๋ผ ๊ทธ๋ฅ numbers.add( c - '0' ) ์ ํ๋ฉด ๊ณง๋ฐ๋ก ๋ฌธ์๋ฅผ ์ซ์๋ก ๋ณํํ ์ ์๋ค.
c - '0'์ ๋ฌธ์ '3'์์ ๋ฌธ์ '0'์ ๋นผ๋ ๊ฒ์ธ๋ฐ, c๋ฅผ ์ซ์ ํํ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ง์ฝ์ c๊ฐ '3'์ด๋ฉด '3' - '0'์ 3์ด ๋๋ค. ์๋ํ๋ฉด '3'์ ์์คํค ๊ฐ์ 51์ด๊ธฐ ๋๋ฌธ์ด๋ค. '0'์ ์์คํค ๊ฐ์ 48์ด๊ธฐ ๋๋ฌธ์ ์์ฐ์ 3๊ฐ์ ์ป์ผ๋ ค๋ฉด '3' - '0'์ ํด์ค์ผ 51 - 48๋ก ๊ณ์ฐ๋๋ฉฐ ๊ฒฐ๊ณผ๊ฐ 3์ด ๋๋ค.
import java.util.*; class Solution { public List<Integer> solution(String my_string) { List<Integer> numbers = new ArrayList<>(); for (char c : my_string.toCharArray()) { if (Character.isDigit(c)) { numbers.add(c - '0'); // ๋ฌธ์ โ ์ซ์๋ก ๋ณํ } } Collections.sort(numbers); // ์ค๋ฆ์ฐจ์ ์ ๋ ฌ return numbers; } }