Super Kawaii Cute Cat Kaoani
본문 바로가기
{Algortihm}

[알고리즘] 문자 및 숫자 알파벳 변환 정리

by wonee1 2025. 9. 25.
728x90

 

 

가끔씩 자바 코테 문제에서 알파벳에서 숫자를 빼고 숫자에서 알파벳을 빼는 로직이 있는데, 매번 헷갈려서 이번 기회에 정리해두고자 한다. 우선 이 로직을 이해하기 위해선 아스키 코드에 대한 이해가 필요하다. 

 

 

1. 아스키 코드란? 

 

아스키 코드(ASCII)는 문자를 숫자로 표현하기 위한 컴퓨터 표준 인코딩 방식이다. 즉 문자(Character)를 컴퓨터가 이해할 수 있도록 숫자 값으로 매핑한 표준이라고 생각하면 된다. 

 

 

 

 

우리가 자주 사용하는 대문자 A 같은 경우는 65, 소문자 a 같은 경우는 97로 매핑된다. 또한 문자에서 0 같은 경우엔 숫자 48로 매핑된다. 이러한 이러한 문자 → 숫자 매핑 규칙 덕분에, 우리는 문자를 숫자처럼 연산할 수 있다.

 

 

2. 숫자 문자 ↔ 정수 변환

 

⭐ 1. 숫자 문자 -> 정수로 변환 

int digit = ch - '0';

 

문자열에서 숫자 문자 '0'을 빼준다. 

이 경우엔 숫자가 섞인 문자열에서 자릿수를 숫자로 변환할 때 사용한다. 즉 문자 '0' ~ '9'를 실제 숫자 0~9로 변환한다. 

 

 

 

"17037300" 같은 결과에서 각 자리 숫자가 몇 번 나왔는지 카운트할 때

int[] num = new int[10];
String result = "17037300";

for (int i = 0; i < result.length(); i++) {
    char ch = result.charAt(i);
    num[ch - '0']++; // 등장한 숫자의 빈도 증가
}

 

 

 

⭐ 2. 정수 -> 숫자 문자로 변환 

 

char ch = (char)(num + '0');

 

정수에 문자 '0'을 더한다.

정수 0~9이 문자 '0' ~ '9'로 변환된다.  정수를 다시 문자열에 합칠 때, 혹은 출력할 때 문자로 변환해야 할 때 사용한다. 

 

 

 

3. 알파벳 ↔ 인덱스 변환 

 

코테에서 알파벳 빈도 세기 같은 문제를 풀 때 나오는 패턴이다. 알파벳은 26개라서 배열 26칸에 딱 맞게 담을 수 있기 때문이다. 

 

 

1. 알파벳 -> 인덱스로 변환 

char c = 'C';
int idx = c - 'A';   // 'C' → 2

 

 

다음과 같이 문자열에서 대문자 'A'를 빼준다. 그 결과, 'A' ~ 'Z'는 정수 0 ~ 25로 변환된다. (소문자도 같은 방식으로 하면 된다) 

 

  • 'A' - 'A' = 0
  • 'B' - 'A' = 1
  • 'Z' - 'A' = 25

 

 

int[] count = new int[26];
String word = "APPLE";

for (int i = 0; i < word.length(); i++) {
    char ch = word.charAt(i);
    count[ch - 'A']++;   // 알파벳을 인덱스로 변환해서 카운트
}

 

 

 

⭐ 2. 인덱스 → 알파벳으로 변환 

 

char c = (char)(i + 'A');  // 0 → 'A', 25 → 'Z'
char c = (char)(i + 'a');  // 0 → 'a', 25 → 'z'

 

다시 문자로 바꿀 땐 더하기를 쓴다. 

 

728x90