본문 바로가기
프로그래머스 코딩 테스트

프로그래머스 : JavaScript 알고리즘 100일 챌린지 38일차

by dongjin6539 2023. 6. 22.
728x90
반응형

프로그래머스 : JavaScript 알고리즘 100일 챌린지 38일차

 

코딩 기초 트레이닝 Day38

 

 

1. n번째 원소부터 : 정수 리스트 num_list와 정수 n이 주어질 때, n 번째 원소부터 마지막 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요.

function solution(num_list, n) {
    var answer = [];
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
num_list n result
[2, 1, 6] 3 [6]
[5, 2, 1, 7, 5] 2 [2, 1, 7, 5]

 

답 확인하기
function solution(num_list, n) {    
    return num_list.slice([n-1]);
}

 

해설 확인하기

주어진 코드는 solution이라는 함수를 정의하고 있습니다. 이 함수는 num_list라는 리스트와 n이라는 정수를 매개변수로 받습니다.

해당 함수의 동작은 다음과 같습니다:

num_list.slice([n-1])을 호출합니다. slice는 배열의 일부분을 추출하여 새로운 배열로 반환하는 JavaScript의 내장 함수입니다.

slice 함수에 전달되는 매개변수는 [n-1]입니다. 이는 num_list 배열에서 인덱스 n-1부터 끝까지의 부분 배열을 추출하도록 지시하는 것을 의미합니다.

slice 함수의 결과를 return을 사용하여 반환합니다.

따라서 solution 함수는 num_list 배열에서 n번째 인덱스부터 끝까지의 요소로 이루어진 부분 배열을 반환합니다.

 

2. 순서 바꾸기 : 정수 리스트 num_list와 정수 n이 주어질 때, num_list를 n 번째 원소 이후의 원소들과 n 번째까지의 원소들로 나눠 n 번째 원소 이후의 원소들을 n 번째까지의 원소들 앞에 붙인 리스트를 return하도록 solution 함수를 완성해주세요.

function solution(num_list, n) {
    var answer = [];
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
num_list n result
[2, 1, 6] 1 [1, 6, 2]
[5, 2, 1, 7, 5] 3 [7, 5, 5, 2, 1]

 

답 확인하기
function solution(num_list, n) {
    var answer = new Array(num_list.length);
    var index = 0;

    for (var i = n; i < num_list.length; i++) {
        answer[index++] = num_list[i];
    }

    for (var i = 0; i < n; i++) {
        answer[index++] = num_list[i];
    }

    return answer;
}

 

해설 확인하기

주어진 코드는 solution이라는 함수를 정의하고 있습니다. 이 함수는 num_list라는 배열과 n이라는 정수를 매개변수로 받습니다.

해당 함수의 동작은 다음과 같습니다:

answer라는 새로운 배열을 생성합니다. 배열의 길이는 num_list 배열의 길이와 동일합니다.

변수 index를 0으로 초기화합니다.

for 루프를 사용하여 i를 n부터 num_list 배열의 길이까지 반복합니다.

answer[index++] = num_list[i]를 실행합니다. 이는 num_list 배열의 i번째 요소를 answer 배열의 index 위치에 할당하고, index 값을 1 증가시킵니다.

또 다른 for 루프를 사용하여 i를 0부터 n까지 반복합니다.

answer[index++] = num_list[i]를 실행합니다. 이는 num_list 배열의 i번째 요소를 answer 배열의 index 위치에 할당하고, index 값을 1 증가시킵니다.

answer 배열을 반환합니다.

결과적으로, solution 함수는 num_list 배열에서 n번째 인덱스부터 끝까지의 요소를 answer 배열에 복사하고, 그 이후에 0부터 n-1까지의 요소를 answer 배열에 복사한 후, 최종적으로 answer 배열을 반환합니다.

 

3. 왼쪽 오른쪽 : 문자열 리스트 str_list에는 "u", "d", "l", "r" 네 개의 문자열이 여러 개 저장되어 있습니다. str_list에서 "l"과 "r" 중 먼저 나오는 문자열이 "l"이라면 해당 문자열을 기준으로 왼쪽에 있는 문자열들을 순서대로 담은 리스트를, 먼저 나오는 문자열이 "r"이라면 해당 문자열을 기준으로 오른쪽에 있는 문자열들을 순서대로 담은 리스트를 return하도록 solution 함수를 완성해주세요. "l"이나 "r"이 없다면 빈 리스트를 return합니다.

function solution(str_list) {
    var answer = [];
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
str_list result
["u", "u", "l", "r"] ["u", "u"]
["l"] []

 

답 확인하기
function solution(str_list) {
    const result = []
    
    const firstLidx = str_list.indexOf('l') === -1 ? Infinity : str_list.indexOf('l')
    const firstRidx = str_list.indexOf('r') === -1 ? Infinity : str_list.indexOf('r')
    
    let isLeft
    
    if(firstLidx === Infinity && firstRidx === Infinity) return result
    
    if(firstLidx < firstRidx) {
        isLeft = true
    } else {
        isLeft = false
    }
    
    if(isLeft) {
        for(let i = 0 ; i < firstLidx ; i ++) {
            result.push(str_list[i])
        }
    } else {
        for(let i = firstRidx+1 ; i < str_list.length ; i ++) {
            result.push(str_list[i])
        }
    }
    
    return result
}

 

해설 확인하기

주어진 코드는 solution이라는 함수를 정의하고 있습니다. 이 함수는 str_list라는 문자열 배열을 매개변수로 받습니다.

해당 함수의 동작은 다음과 같습니다:

빈 배열 result를 생성합니다.

indexOf 함수를 사용하여 'l' 문자열과 'r' 문자열의 첫 번째 등장 인덱스를 찾습니다. 만약 해당 문자열이 없으면 Infinity로 초기화합니다.

isLeft라는 변수를 선언합니다.

firstLidx와 firstRidx 값을 비교하여 isLeft 변수를 설정합니다. firstLidx가 firstRidx보다 작으면 isLeft 변수를 true로 설정합니다.

그렇지 않으면 isLeft 변수를 false로 설정합니다.

만약 firstLidx와 firstRidx가 모두 Infinity라면 빈 배열 result를 반환합니다.

isLeft가 true인 경우:

for 루프를 사용하여 인덱스 0부터 firstLidx 이전까지의 요소를 result 배열에 추가합니다.

isLeft가 false인 경우:

for 루프를 사용하여 인덱스 firstRidx+1부터 str_list 배열의 끝까지의 요소를 result 배열에 추가합니다.

최종적으로 result 배열을 반환합니다.

결과적으로, solution 함수는 str_list 배열에서 처음으로 등장하는 'l' 문자열과 'r' 문자열 사이에 있는 요소들을 추출하여 배열 result에 저장하고, 그렇지 않은 경우 빈 배열 result를 반환합니다.

 

4. n번째 원소까지 : 정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 n 번째 원소까지의 모든 원소를 담은 리스트를 return하도록 solution 함수를 완성해주세요.

function solution(num_list, n) {
    var answer = [];
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
num_list n result
[2, 1, 6] 1 [2]
[5, 2, 1, 7, 5] 3 []

 

답 확인하기
function solution(num_list, n) {
    var answer = new Array(n);
    
    for (var i = 0; i < n; i++) {
        answer[i] = num_list[i];
    }
    
    return answer;
}

 

해설 확인하기

주어진 코드는 solution이라는 함수를 정의하고 있습니다. 이 함수는 num_list라는 배열과 n이라는 정수를 매개변수로 받습니다.

해당 함수의 동작은 다음과 같습니다:

길이가 n인 새로운 배열 answer를 생성합니다.

for 루프를 사용하여 i를 0부터 n까지 반복합니다.

answer[i] = num_list[i]를 실행합니다. 이는 num_list 배열의 i번째 요소를 answer 배열의 i번째 위치에 할당합니다.

answer 배열을 반환합니다.

결과적으로, solution 함수는 num_list 배열에서 처음부터 n개의 요소를 추출하여 answer 배열에 복사하고, 그렇게 만들어진 answer 배열을 반환합니다.

 

5. n개 간격의 원소들 : 정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 마지막 원소까지 n개 간격으로 저장되어있는 원소들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.

function solution(num_list, n) {
    var answer = [];
    return answer;
}

길라잡이

  • 데이터를 수정해서 답을 구해보세요.
  • 예시
num_list n result
[4, 2, 6, 1, 7, 6] 2 [4, 6, 7]
[4, 2, 6, 1, 7, 6] 4 [4, 7]

 

답 확인하기
function solution(num_list, n) {
    var answer = [];
    
    for (var i = 0; i < num_list.length; i += n) {
        answer.push(num_list[i]);
    }
    
    return answer;
}

 

해설 확인하기

주어진 코드는 solution이라는 함수를 정의하고 있습니다. 이 함수는 num_list라는 배열과 n이라는 정수를 매개변수로 받습니다.

해당 함수의 동작은 다음과 같습니다:

빈 배열 answer를 생성합니다.

for 루프를 사용하여 i를 0부터 num_list 배열의 길이까지 n씩 증가시키며 반복합니다. a

nswer.push(num_list[i])를 실행합니다. 이는 num_list 배열의 i번째 요소를 answer 배열에 추가합니다.

answer 배열을 반환합니다.

결과적으로, solution 함수는 num_list 배열에서 인덱스가 n씩 증가하는 요소들을 추출하여 새로운 배열인 answer에 저장하고, 그렇게 만들어진 answer 배열을 반환합니다.

728x90
반응형