프로그래머스 Lv0 - 글자 이어 붙여 문자열 만들기, 9로 나눈 나머지, 문자열 여러 번 뒤집기, 배열 만들기 5, 부분 문자열 이어 붙여 문자열 만들기, 문자열의 뒤의 n글자, 접미사 배열

찐새·2023년 4월 28일
0

코딩테스트

목록 보기
35/53
post-thumbnail

글자 이어 붙여 문자열 만들기

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

코드

function solution(my_string, index_list) {
    let answer = "";
    index_list.forEach((v)=>{
        answer += my_string[v];
    })
    return answer;
}

풀이

index_list를 순회하며 my_string[idx]를 찾아 문자열을 만들었다. map을 이용해 my_string[idx]로 이루어진 배열을 만들고 join하는 방법도 있었다.

  • index_list.map((v)=>my_string[v]).join("")
    reduce를 사용하는 방법도 있었다.
  • index_list.reduce((acc, cur)=>acc + my_string[cur],"")

9로 나눈 나머지

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

코드

function solution(number) {
    return [...number].reduce((acc, cur)=>acc + +cur,0) % 9;
}

풀이

문자열 number의 수를 모두 더한 후 9로 나눈 나머지를 반환하는 문제였다. 그래서 그렇게 했다.

문자열 여러 번 뒤집기

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

코드

function solution(my_string, queries) {
    let answer = [...my_string];
    for (const [s, e] of queries) {
        const tmp = answer.slice(s, e+1).reverse();
        answer.splice(s, e - s + 1, tmp);
        answer = answer.flat();
    }
    return answer.join("");
}

풀이

my_string의 인덱스 s부터 e까지 슬라이싱한 부분을 뒤집었다. splice를 이용하여 범위 안의 요소를 제거 후 뒤집은 배열을 추가했다. 2차원 배열이 되기 때문에 flat으로 평탄화했다.

배열 만들기 5

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

코드

function solution(intStrs, k, s, l) {
    return intStrs.reduce((acc, cur)=>{
        const tmp = +([...cur].slice(s, s + l).join(""));
        if (tmp > k) return [...acc, tmp]
        return acc
    }, []);
}

풀이

필요한 cur의 길이는 s부터 시작해 l의 길이이므로, slice(s, s + l)하여 문자열➡️숫자로 바꾸었다. 그 값이 k보다 크면 acc에 추가하고, 아니라면 acc를 반환한다.

부분 문자열 이어 붙여 문자열 만들기

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

코드

function solution(my_strings, parts) {
    return parts.map(([s,e], i)=> my_strings[i].slice(s, e+1)).join("");
}

풀이

문자열을 슬라이싱하여 새 배열을 만들고 join했다. [문자열 여러 번 뒤집기]처럼 reverse가 필요 없어 my_strings[i]를 배열로 만들지 않았다.

문자열의 뒤의 n글자

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

코드

function solution(my_string, n) {
    return my_string.slice(-n);
}

풀이

뒤에서부터 n개의 문자열을 반환하기 위해 slice-n을 넣었다. 음수를 인자로 주면 뒤에서부터 n개의 요소를 슬라이싱한다.

접미사 배열

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

코드

function solution(my_string) {
    return Array.from(my_string, (_, i)=>my_string.slice(-(i+1))).sort();
}

풀이

Array.from은 첫 인자를 배열로 만들며, 두 번째 인자로 map과 같은 함수를 콜백으로 받는다. 뒤에서부터 인덱스를 키워가며 자른 문자열로 새 배열을 만들었다.

sort는 유니코드로 정렬한 값을 detault로 반환한다. 이미 사전순이므로 따로 콜백을 넣지 않았다.

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글