사전캠프 2주차(6/7) TIL

slppills·2024년 6월 7일
0

TIL

목록 보기
10/69

코드카타 34번 : 문자열 내림차순으로 배치하기

문제 설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

나의 풀이
문자를 비교하기 위해 아스키코드로 변환해서 내림차순으로 정렬한 후 다시 문자로 바꿔야되겠다고 생각했다.

처음 내 코드 :

function solution(s) {
    let answer = [];
    for (let i=0; i<s.length; i++) {
        s[i] = s[i].charCodeAt();
    }
    s.sort((a, b) => (a - b));
    for (let i=0; i<s.length; i++) {
        answer.append(String.fromCharCode(s[i]));
    }
    return answer;
}

이 코드에는 문제가 많았다. 검색해보니 문자열은 불변(immutable)하기 때문에 따로 배열을 만들어서 문자열 s를 아스키코드로 바꾼값을 담기로 했다. 그리고 배열에 요소를 추가할 때 자바스크립트는 append() 가 아니라 push()를 사용하기 때문에 그 코드도 고쳤다. (append 메소드는 자바스크립트에 없는 코드이고 파이썬 문법이었음)

최종 코드 :

function solution(s) {
    let charCodes = [];
    let answer = '';
    for (let i=0; i<s.length; i++) {
        charCodes.push(s[i].charCodeAt());
    }
    charCodes.sort((a, b) => b - a);
    for (let i=0; i<s.length; i++) {
        answer += String.fromCharCode(charCodes[i]);
    }
    return answer;
}

아스키코드 관련 자바스크립트 코드

charCodeAt()

  • 문자의 아스키코드 번호를 반환
console.log('A'.charCodeAt())  // 65

String.fromCharCode(아스키 번호)

  • 아스키 번호의 문자를 반환
const p1 = String.fromCharCode(65, 66, 67)
console.log(p1) // "ABC"

codePointAt()

  • 문자의 아스키 번호를 반환
console.log("A".codePointAt()) // 65

0개의 댓글