[codility] MaxNonoverlappingSegments

2019, Oct 01    

문제 요약

배열 A B 와 선분을 만들어 겹치지 않는 선을 찾는 문제
문제 이해만 30분 소요 ㅜㅜ ** 탐욕적 알고리즘일 알아야하는게 핵심!
input :
A = {1,3,7,9,9}
B = {5,6,8,9,10}


output : 3

나의코드 50%


function solution(A, B) {
    // write your code in JavaScript (Node.js 8.9.4)
    let resultCount = 0;
    let segLen =  A.length;
    for(let i=0; i < A.length ;i++){

        if(B[i] >= A[i+1] &&  B[i] <= B[i+1]){
            resultCount++;
        }
    }
    

    return (segLen -resultCount);
}

  • 예외처리의 누락
  • 총 선분(배열길이) 을 구한후 중복되지 않는 부분을 제거하였으나 에러검출 4개..

100% code

function solution(A, B) {
    // write your code in JavaScript (Node.js 8.9.4)
    if (A.length <= 1) {
        return A.length;
    }
    //배열 길이체크가 10%

    let resultCount = 1;
    let prevEnd = B[0];
    for(let i=1; i < A.length ;i++){
        if(A[i] > B[i+1]  ||  A[i] > prevEnd){
            resultCount++;
             prevEnd = B[i];
        }
    }
    

    return resultCount;
}

그리드 알고리즘 학습 후 스스로 다시 푼 문제

// you can write to stdout for debugging purposes, e.g.
// console.log('this is a debug message');

function solution(A, B) {
    // write your code in JavaScript (Node.js 8.9.4)
    let result = '';
 
    if(A.length < 1) {
          return 0;
    }
    
    var count = 1;
    var key = 0;
    for ( let i = 0; i < A.length; i++ ){
        if(K[key] < A[i]){
            count++;
            key = i;
        }   
    }
 
    
    return count;
}