[프로그래머스] 문자열 밀기.JS

ungnam·2023년 6월 8일

programmers level0

목록 보기
26/29
post-thumbnail

https://school.programmers.co.kr/learn/courses/30/lessons/120921

나의 풀이

function solution(A, B) {
    for (let i = 0; i < A.length; i++) {
        if (A === B) return i;
        else {
            A = A.at(-1).concat(A.slice(0, -1));
        }
    }
    
    return -1;
}

✔ 문제 설명에 충실한 풀이
AB가 같으면 i를 반환 -> i가 곧 밀어야 하는 최소 횟수가 됨
✔ 맨 끝에 위치한 문자 뒤에 나머지 문자열을 붙임으로써 문자열 밀기를 구현

참고할 만한 풀이

function solution(A, B) {
    return (B + B).indexOf(A);
}

이게 어떻게 가능하지..? 라고 생각한 순간 B를 2개 합치고 나서 "아...!" 하고 감탄했다.

Ahello, Bohell이면 B + Bohellohell, 즉 A를 밀어서 B가 나오면 B + B에는 A가 반드시 포함되어 있고, 그 위치가 바로 A를 미는 최소 횟수가 되는 것이다.

주어진 조건을 "서로 같은 문자열을 연달아 붙인다"라는 색다른 관점으로 접근한 창의적인 방식이었다.

profile
꾸준함을 잃지 말자.

0개의 댓글