Coding Planet
9. ์ซ์๋ง ์ถ์ถ - Character.isDigit(), ASCII Code ์ฌ์ฉํ๊ธฐ ๋ณธ๋ฌธ
๐ ์ฝ๋ฉํ
์คํธ/์๊ณ ๋ฆฌ์ฆ
9. ์ซ์๋ง ์ถ์ถ - Character.isDigit(), ASCII Code ์ฌ์ฉํ๊ธฐ
jhj.sharon 2023. 5. 8. 14:52๋ฐ์ํ
1. ๋ฌธ์ ์๊ตฌ์ฌํญ
- ๋ฌธ์์ ์ซ์๊ฐ ์์ฌ์๋ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ฉด ๊ทธ ์ค ์ซ์๋ง ์ถ์ถํ์ฌ ๊ทธ ์์๋๋ก ์์ฐ์๋ฅผ ๋ง๋ญ๋๋ค.
- ๋ง์ฝ “tge0a1h205er”์์ ์ซ์๋ง ์ถ์ถํ๋ฉด 0, 1, 2, 0, 5์ด๊ณ ์ด๊ฒ์ ์์ฐ์๋ฅผ ๋ง๋ค๋ฉด 1205์ด ๋ฉ๋๋ค.
2. ๋ด ํ์ด - Character.isDigit()
- ์์ ์ํ๋ฒณ์ ์ฐพ์๋ด๋ ๋ฉ์๋ Character.isAlphabet()์ ์ฌ์ฉํ ์ ์ด ์๋ค. ์ด๋ฒ์๋ ํ๋ผ๋ฏธํฐ๋ก ์ฃผ์ด์ง๋ ๋ฌธ์๊ฐ ์ซ์์ธ์ง ํ๋ ํ๋ ๋ฉ์๋ Character.isDigit()๋ฅผ ์ฌ์ฉํ๋ค.
- ์ด ๋ str ๋ฌธ์์ด์ ๋๋ฉด์ charAt()์ผ๋ก ํด๋น ๋ฌธ์๊ฐ ์ซ์์ธ์ง ํ๋ ํ๊ฒ๋๋ค.
- ๋ฌธ์ ์์ "์์ฐ์"๋ฅผ ๋ฐํํ๋ผ๊ณ ํ์ผ๋ฏ๋ก 0์ผ๋ก ์์ํ ๊ฒฝ์ฐ 0์ ์์ ์ผํ๋ค.
- ๋ฐ๋ผ์ ๋ฌธ์์ด๋ก ๋ง๋ค๊ณ intํ์ผ๋ก ๋ฐ๊ฟ์ ๊ฐ์ฅ ์์ ๋ถ๋ 0์ ์์ ์ค๋ค
import java.util.Scanner;
public class ExtractNumbers {
public int solution(String str) {
String answer = "";
//๋ฌธ์์ด ๋๋ฉด์ ์ซ์ ์ถ์ถํ๊ธฐ Character.isDigit()
for(int i =0; i<str.length(); i++) {
char c = str.charAt(i);
if(Character.isDigit(c)) answer+=c;
}
return Integer.parseInt(answer);
}
public static void main(String[] args) {
ExtractNumbers T = new ExtractNumbers();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(T.solution(str));
}
}
3. ๋ค๋ฅธ ํ์ด - ASCII Code(48~57)
- ์ซ์์ ASCII ์ฝ๋๋ฅผ ํตํด์ ์ซ์๋ฅผ ํ๋ณํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ์ซ์ '0' ~ '9'์ ASCII๋ 48~57์ด๋ค.
- ์กฐ๊ฑด : x >=48 && x<=57
- answer = answer*10 + (x-48) : ๋ฌธ์(c)๋ฅผ ์ฐ์ฐ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๋์ผ๋ก ASCII ์ฝ๋๊ฐ์ผ๋ก ์ธ์๋๋ค.
- ์ฆ, ๋ฌธ์์ด์์ ์ซ์ ํ๋๋ฅผ ์ถ์ถํด answer ๋ณ์์ ์ ์ฅํ๋ ๋ถ๋ถ์ด๋ค. ์ด ๊ณผ์ ์์ ASCII ์ฝ๋์์ 0์ ํด๋นํ๋ ๊ฐ(48)์ ๋นผ์ฃผ๋ฉด ์ซ์์ ๊ฐ์ ์ป์ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด, ๋ฌธ์์ด "123"์ด ์ ๋ ฅ๋๋ค๋ฉด
- ์ฒซ ๋ฒ์งธ for loop์์ x๋ ๋ฌธ์ '1'์ด ์ด๋ค. ์ด๋ answer๋ ์ด๊ธฐ๊ฐ์ธ 0์ด๋ฏ๋ก, answer = answer * 10 + (x - 48)์ 0 * 10 + (49 - 48)์ด ๋์ด answer๋ 1์ด ๋๋ค.
- ๋ ๋ฒ์งธ for loop์์ x๋ ๋ฌธ์ '2'์ด๋ฏ๋ก, answer = answer * 10 + (x - 48)์ 1 * 10 + (50 - 48)์ด ๋์ด answer๋ 12๊ฐ ๋๋ค.
- ๋ง์ง๋ง์ผ๋ก x๋ ๋ฌธ์ '3'์ด๋ฏ๋ก, answer = answer * 10 + (x - 48)์ 12 * 10 + (51 - 48)์ด ๋์ด answer๋ 123์ด ๋๋ค.
- ์ฆ answer๋ฅผ ๋ฎ์ด์ฐ๋ฉด์ ์ต์ข ๊ฐ์ ๋ง๋ค๊ฒ ๋๋ค.
import java.util.Scanner;
public class Main {
public int solution(String str) {
int answer = 0;
for(char x : str.toCharArray()){
if(x>=48 && x<=57) answer = answer*10 + (x-48);
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.nextLine();
System.out.println(T.solution(str));
}
}
๋ฐ์ํ
'๐ ์ฝ๋ฉํ ์คํธ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments