CODE KATA #21

loopbackseal·2021년 2월 10일
0

CODE KATA 🧗‍♂️

목록 보기
21/32
post-thumbnail

가장 짧은 문자 거리

한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출 력하는 프로그램을 작성하세요.

나의 풀이

            function solution(s, t){
                let answer=[];
                let result=[];
                for(i=0; i<s.length; i++) {
                    if(s[i]===t) result.push(i);
                }
                for(i=0; i<s.length; i++) {
                    let distance=[];
                    for(let x of result) {
                        let d = x > i ? x-i : i-x;
                        distance.push(d);
                    }
                    answer.push(Math.min(...distance));
                }
                return answer;
            }
            
            let str="teachermode";
            console.log(solution(str, 'e'));

정답 풀이

            function solution(s, t){
                let answer=[];
                let p=1000;
                for(let x of s){
                    if(x===t){
                        p=0;
                        answer.push(p);
                    }
                    else{
                        p++;
                        answer.push(p);
                    }
                }
                p=1000;
                for(let i=s.length-1; i>=0; i--){
                    if(s[i]===t) p=0;
                    else{
                        p++;
                        answer[i]=Math.min(answer[i], p);
                    }
                }
                return answer;
            }
            
            let str="teachermode";
            console.log(solution(str, 'e'));

배울 점

정답 풀이를 처음 보았을 때, p=1000을 보고 이게 무슨 풀이인가 싶었는데, 나의 풀이의 경우 s.length 한바퀴 + s.length * t의 갯수 만큼의 처리를 해줘야하는데 반해, 두바퀴만으로 같은 결과를 만들어내기 때문이다.

profile
CAU Business Administration

0개의 댓글