알고리즘 문제풀때 자주 사용했던? 것
charCodeAt()은 문자열에서 특정 위치의 문자를 UTF-16 코드 유닛(숫자 값)으로 변환하는 메서드
문자열.charCodeAt(인덱스)
"Hello".charCodeAt(0) // 72 ('H'의 코드값)
"Hello".charCodeAt(1) // 101 ('e'의 코드값)
"Hello".charCodeAt(4) // 111 ('o'의 코드값)
"ABC".charCodeAt() // 65 (인덱스 0이 기본값)
"ABC".charCodeAt(0) // 65 (같은 결과)
"Hi".charCodeAt(5) // NaN (범위 초과)
"Hi".charCodeAt(-1) // NaN (음수 인덱스)
| 문자 종류 | 범위 | 예시 |
|---|---|---|
| 숫자 | 48-57 | '0' = 48, '9' = 57 |
| 대문자 | 65-90 | 'A' = 65, 'Z' = 90 |
| 소문자 | 97-122 | 'a' = 97, 'z' = 122 |
| 공백 | 32 | ' ' = 32 |
// 빠른 참조
'0'.charCodeAt(0) // 48
'A'.charCodeAt(0) // 65
'a'.charCodeAt(0) // 97
' '.charCodeAt(0) // 32
// 소문자 알파벳을 0~25 인덱스로 변환
function getAlphabetIndex(char) {
return char.charCodeAt(0) - 'a'.charCodeAt(0);
// 또는 직접 계산
return char.charCodeAt(0) - 97;
}
getAlphabetIndex('a') // 0
getAlphabetIndex('z') // 25
function checkCharType(char) {
const code = char.charCodeAt(0);
if (code >= 65 && code <= 90) return "대문자";
if (code >= 97 && code <= 122) return "소문자";
if (code >= 48 && code <= 57) return "숫자";
return "특수문자";
}
checkCharType('A') // "대문자"
checkCharType('5') // "숫자"
// 소문자 → 대문자 (ASCII값 -32)
function toUpperCase(char) {
const code = char.charCodeAt(0);
if (code >= 97 && code <= 122) {
return String.fromCharCode(code - 32);
}
return char;
}
// 대문자 → 소문자 (ASCII값 +32)
function toLowerCase(char) {
const code = char.charCodeAt(0);
if (code >= 65 && code <= 90) {
return String.fromCharCode(code + 32);
}
return char;
}
// 알파벳 개수 세기
const str = "hello";
const count = new Array(26).fill(0);
for (const char of str) {
count[char.charCodeAt(0) - 97]++;
}
// count[7] = 1 (h), count[4] = 1 (e),
// count[11] = 2 (l), count[14] = 1 (o)
String.fromCharCode()숫자 코드를 다시 문자로 변환:
String.fromCharCode(65) // 'A'
String.fromCharCode(97) // 'a'
// 여러 코드를 한번에
String.fromCharCode(72, 101, 108, 108, 111) // 'Hello'
// 한글, 이모지는 유니코드 값
'가'.charCodeAt(0) // 44032
'😀'.charCodeAt(0) // 55357 (서로게이트 페어)
'😀'.length // 2 (주의!)
// ❌ 비효율적
for (let i = 0; i < str.length; i++) {
const index = str.charCodeAt(i) - 'a'.charCodeAt(0);
}
// ✅ 효율적 (상수 캐싱)
const CHAR_A = 97; // 'a'.charCodeAt(0)
for (let i = 0; i < str.length; i++) {
const index = str.charCodeAt(i) - CHAR_A;
}