코딩 테스트 - 신규 아이디 추천

1 minute read

개요

입력한 아이디를 특정 규칙에 맞는 새로운 아이디로 추천해주는 함수를 작성해야 한다.

조건

  • 총 7단계를 거쳐 규칙에 맞는 새로운 아이디를 반환한다. 자세한 내용은 문제참조.

풀이

친절하게 각 단계를 적어준 문제이다. 그럼에도 시간을 굉장히 많이 허비했다는 것에 자괴감을 느낀다….. 꼼꼼하게 예외 케이스를 생각하는 습관을 기르지 않은 것이 원인이라고 생각한다. 풀이를 저장한 파일이 증발해서 프로그래머스의 좋은 풀이를 대신 올린다…..

// 1. 프로그래머스 풀이
function solution(newId) {
    let answer = "";
    for (let i = 0; i < newId.length; i++) {
        // 1단계: 모든 문자를 소문자로 치환한다.
        let c = newId[i].toLowerCase();
        // 2, 3단계: 불필요한 특수문자를 제거한다. 그리고, 연속한 온점은 하나만 남긴다.
        if ("0123456789abcdefghijklmnopqrstuvwxyz.-_".indexOf(c) === -1) continue;
        if ( c === "." && answer[answer.length - 1] === ".") continue;
        answer += c;
    }
    // 4단계: 맨 앞의 문자가 온점이면 제거한다.
    if (answer[0] === ".") answer = answer.slice(1);
    // 5단계: 길이가 16자 이상이면 나머지 문자를 제거한다.
    answer = answer.slice(0, 15);
    // 6단계: 문자열 맨 뒤에 온점이 있으면 제거한다.
    if (answer[answer.length - 1] === ".") answer = answer.slice(0, answer.length - 1);
    // 7단계: 빈 문자열이면 a를 대입한다.
    if (!answer) answer = "a";
    // 8단계: 문자열의 길이가 2 이하이면, 3이 될 때까지 마지막 문자를 추가한다.
    while (answer.length < 3) answer += answer[answer.length -1];
    return answer;
}

Leave a comment