본문 바로가기

CS/알고리즘

[230323] 둘만의 암호

반응형

 

 

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

 

내 풀이

→ 코드 실행은 모두 통과하는데(추가한 테케 포함),

제출하면 테스트 2, 9 제외하고 모두 실패로 뜬다.

왜 실패하는지 원인 분석 필요함.

function solution(s, skip, index) {
	const alphabetList = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];
    
    return [...s].map(word => { 
        let wordIdx = alphabetList.join('').split(word)[0].length;
        let count = 0;
        
        while(count < index) { 
            if(![...skip].includes(alphabetList[wordIdx])) {
                count++;
            }
            wordIdx++;
            
            if(wordIdx === 26) {
                wordIdx = 0; 
                
                while([...skip].includes(alphabetList[wordIdx])) {
                    wordIdx++;
                } 
            };
        }
        return alphabetList[wordIdx];
    }).join('');
}

 

 

참고한 풀이

애초에 미리 alphabet 리스트 중에서 skip은 빼고 시작한다.

function solution(s, skip, index) {
    const alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'].filter(w => !skip.includes(w)); 
    
    return [...s].map(a => alphabet[(alphabet.indexOf(a) + index) % alphabet.length]).join('')
}
반응형

'CS > 알고리즘' 카테고리의 다른 글

[230325] 이진 변환 반복하기  (0) 2023.03.26
[230325] 최솟값 만들기  (0) 2023.03.26
[230323] 최빈값 구하기  (0) 2023.03.26
[230323] 유한소수 판별하기: toFixed  (0) 2023.03.26
[230322] 등수 매기기: indexOf  (0) 2023.03.26