Algorithm/Javascript

[프로그래머스] 230720 코딩테스트 연습

보라해바라기 2023. 7. 20. 15:34
SMALL

1. 2의 영역

function solution(arr) {
    var answer = [];
    
    let firstIndex = arr.indexOf(2); // 맨 처음부터 인덱스 검색
    let lastIndex = arr.lastIndexOf(2); // 맨 끝부터 인덱스 검색
    
    answer = arr.slice(firstIndex, lastIndex+1)
    
    if (answer.length == 0) { // 배열 안에 2가 없을 때
        answer.push(-1);
    }
    
    return answer;
}

- indexOf(검색할 값, 시작 위치) > 앞에서부터 검색할 값을 시작하는 속성. 시작 위치 생략 시, 0으로 인식 

- lastIndexOf(검색할 값, 시작 위치) > 에서부터 검색할 값을 시작하는 속성. 시작 위치 생략 시, 맨 끝부터 시작

 

2. 배열 조각하기

// ** splice를 이용해 배열의 특정 항목 제거
function solution(arr, query) {
    var answer = [];
    
    for(let i = 0 ; i < query.length ; i ++) {
        const idx = query[i]
        
        if(i%2 === 0) {
            arr.splice(idx+1, arr.length -(idx+1))
            // ** 시작 인덱스, 제거 갯수
        } else {
             arr.splice(0, idx)
        }
    }
    
    answer = arr;
    
    return answer
}

 

3. n번째 원소부터

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

 

4. 순서 바꾸기

function solution(num_list, n) {
    var answer = [];
    
    let res1 = num_list.slice(0, n);
    let res2 = num_list.slice(n, );
    answer = res2.concat(res1);
    
    return answer;
}

 

 

5. 왼쪽 오른쪽

//  [”u”, “d”] ⇒ [] 
// [”u”, “l”, “d”] ⇒ [”u”] 
// [”u”, “r”, “d”] ⇒ [”d”]
function solution(str_list) {
    var answer = [];
    
    let lIndex = str_list.indexOf("l");
    let rIndex = str_list.indexOf("r");
    
    if (str_list.includes("l")) {
        if (str_list.includes("r")) {
            if (lIndex < rIndex) {
                answer = str_list.slice(0, lIndex);
            } else if (lIndex > rIndex) { 
                answer = str_list.slice(rIndex+1, );
            }
        } else {
            answer = str_list.slice(0, lIndex);
        }
    } else {
        if (str_list.includes("r")) {
                answer = str_list.slice(rIndex+1, );
        } else {
            answer = [];
        }
    }
    
     return answer;
    
}

 

 

 

 

728x90