백준 10809번을 풀어보았다.
let S = require('fs').readFileSync('/dev/stdin').toString()
let output = ''
for (let i = 'a'.charCodeAt(); i <= 'z'.charCodeAt(); i++) {
output += `${S.indexOf(String.fromCharCode(i))} `
}
console.log(output)
위 풀이에서 사용된 charCodeAt(), fromCharCode(), indexOf() 메소드를 정리해보자.
charCodeAt()
문자열.charCodeAt(인덱스)
charCodeAt() 메소드는 특정 문자열의 특정 인덱스에 해당하는 문자의 아스키 코드 값을 반환한다.
인덱스를 입력하지 않으면 0번 인덱스에 해당하는 문자의 아스키 코드 값을 반환한다.
> console.log('a'.charCodeAt())
97
> console.log('ab'.charCodeAt())
97
> console.log('ab'.charCodeAt(0))
97
> console.log('ab'.charCodeAt(1))
98
fromCharCode()
String.fromCharCode(숫자[, ..., 숫자])
fromCharCode() 메소드는 특정 숫자에 해당하는 아스키 코드 값을 가지는 문자를 반환한다.
> console.log(String.fromCharCode(97))
a
> console.log(String.fromCharCode(98))
b
> console.log(String.fromCharCode(65))
A
indexOf()
indexOf() 메소드 관련해서는 앞서 많이 다뤄보았으니 이 문제에 사용된 핵심 포인트만 정리해보자면,
배열 또는 문자열에 동일한 값을 가지는 요소 또는 문자가 2개 이상 있을 경우 indexOf() 메소드는 그 중 앞의 인덱스를 반환한다.
참고) 반복문 ① 배열
💫 이 문제를 통해 배운 것
• 특정 문자의 아스키 코드 값은 charCodeAt() 메소드로, 특정 아스키 코드 값의 문자는 fromCharCode() 메소드로 확인할 수 있다.
• 배열 또는 문자열에 동일한 값을 가지는 요소 또는 문자가 2개 이상 있을 경우 indexOf() 메소드는 그 중 앞의 인덱스를 반환한다.