Front-End

프로그래머스 기초트레이닝 12일차 본문

알고리즘

프로그래머스 기초트레이닝 12일차

jeongsso 2023. 8. 28. 20:57

 

 

 

문제 61 .  배열의 원소 삭제하기


문제 설명

정수 배열 arr과 delete_list가 있습니다. 

arr의 원소 중 delete_list의 원소를 모두 삭제하고 

남은 원소들은 기존의 arr에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요.


입출력 예

arr delete_list result
[293, 1000, 395, 678, 94] [94, 777, 104, 1000, 1, 12] [293, 395, 678]
[110, 66, 439, 785, 1] [377, 823, 119, 43] [110, 66, 439, 785, 1]

 

 

입출력 예 설명

예제 1번의 arr의 원소 중 1000과 94가 delete_list에 있으므로 이 두 원소를 삭제한 [293, 395, 678]을 return 합니다.

예제 2번의 arr의 원소 중 delete_list에 있는 원소는 없습니다. 따라서 arr 그대로인 [110, 66, 439, 785, 1]을 return 합니다.

 

 

저의 풀이!

function solution(arr, delete_list) {
    return arr.filter(item => !delete_list.includes(item));
}

console.log(solution([293, 1000, 395, 678, 94], [94, 777, 104, 1000, 1, 12]));

 

 

메모

filter로 delete_list에 arr의 요소가 포함되어 있지않은것만 빼냈습니당 ㅎㅎ

 

 

 

문제 62 .  배열의 원소만큼 추가하기


문제 설명

아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 

양의 정수 배열 arr가 매개변수로 주어질 때, 

arr의 앞에서부터 차례대로 원소를 보면서 원소가 a라면 X의 맨 뒤에 a를 a번 추가하는 일을 반복한 

뒤의 배열 X를 return 하는 solution 함수를 작성해 주세요.





 

 

입출력 예

arr result
[5, 1, 4] [5, 5, 5, 5, 5, 1, 4, 4, 4, 4]
[6, 6] [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6]
[1] [1]

 

 

 

입출력 예 설명

 

 

저의 풀이!

 
function solution(arr) {
    let array = [];

    arr.map(a => {
        for (let i = 0; i < a; i++) {
            array.push(a);
        }
    });
    return array;
}

console.log(solution([5, 1, 4]));

 

메모

map 안에 for 문을 사용해서 반복문을 두번 사용했다.
배열을 돌리되, i번만큼 i=a만큼 반복해서 push 넣어줘라! 라는 식의

 

 

 

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


문제 설명

길이가 같은 문자열 배열 my_strings와 이차원 정수 배열 parts가 매개변수로 주어집니다. 

parts[i]는 [s, e] 형태로, my_string[i]의 인덱스 s부터 인덱스 e까지의 부분 문자열을 의미합니다. 

각 my_strings의 원소의 parts에 해당하는 부분 문자열을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.


 

입출력 예

my_strings parts result
["progressive", "hamburger", "hammer", "ahocorasick"] [[0, 4], [1, 2], [3, 5], [7, 7]] "programmers"

 

 

 

입출력 예 설명

앞에서부터 5명씩 두 그룹으로 묶을 수 있습니다. ["nami", "ahri", "jayce", "garen", "ivern"], ["vex", "jinx"] 이 두 그룹에서 가장 앞에 서있는 사람들의 이름을 담은 리스트인 ["nami", "vex"]를 return 합니다.

 

 

저의 풀이!

function solution(my_string, parts) {
    let answer = '';

    for (let i = 0; i < my_string.length; i++) {
        answer += my_string[i].slice(parts[i][0], parts[i][1] + 1);
    }

    return answer;
}

 

 

메모

여기서는 slice를 사용했는데, slice가 start 인자는 포함되고 end인자로 들어온 거는 포함하지않는 다는 점을 생각하지 못했다.

console.log('12345'.slice(1, 2));
// => 2 만 출력됨 2, 3 이 아니고

그래서 마지막 end인자에 그것까지 포함되도록 +1을 해서 코드를 작성했다.

 

Comments