이제 학습의 시작을 알고리즘으로 하는것에 익숙해졌다.

 

학습이 건강해지고 있다는것....

 

 

1. 핸드폰 번호 가리기

 

그다지 어렵지 않은 문제이다. (엄청 헤맸음)

 

반복문을 이용해서 문자열 phone_number를 순회하여 length -4 까지는 * 로, 그외는 그대로 출력해주면 된다

function solution(phone_number) {
    var answer = '';
    for(var i = 0; i < phone_number.length; i++ ) {
     answer = i < phone_number.length - 4 ? answer + '*' : answer + phone_number[i] ;
    }
    return answer;
}

 

 

 

2. 없는 숫자 더하기

 

function solution(numbers) {
    var answer = 0;
    for( var i = 0; i < numbers.length; i ++) {
        answer += numbers[i]
    }
    return 45 - answer;
}

배열의 모든 숫자를 더하고 0~9 의 합인 45에서 빼는 코드를 만들었다.

 

아무래도 (야매)

정답으로 인정받기엔 어려운 답지라고 생각한다.

 

 

.includes() 함수  를 데려오도록 하자

이걸 이용하면 훨씬 그럴싸 한 코드를 만들 수 있다.

 

function solution(numbers) {
    var answer = 0;
    for ( var i = 1; i < 10; i ++) {
        if(!numbers.includes(i)) { answer +=i} 
    }
    return answer;
}

1~9 까지의 숫자를 number가 포함되어 있는지를 체크한 뒤  없는경우 ( ! ) 만 answer 에 더해준다.

 

 

 

3. 제일 작은 수 제거하기

 

우선 아는것만 가지고 풀어보자..

 

function solution(arr) {
    var answer = [];
    for( var i = 0; i < arr.length ; i++) {
        if(arr[i] != Math.min(...arr) ) { answer.push(arr[i])}
    }
    return answer < 1 ? [-1] : answer;
}

 

arr을 순회하여 arr의 최소값이 아닌경우 answer 에 push 한다.

그리고 answer 값이 없는경우 [-1] 을 리턴하고 아닌경우 answer 를 그대로 리턴...

 

 

통과는 되는데, 테스트1의 지연시간이 심상치가 않다.

아마도, arr.length 가 엄청나게 큰 경우인 듯 하다.

 

검색 해본결과, index값을 찾기 위한 for 노가다를 할 필요가 없이

 

 

indexOf() 함수를 사용하면 된다

이 문제는 사실상 Math.min() 과 indexOf() 를 위한 문제였던것

 

function solution(arr) {
    if(arr.length == 1) { return [-1]}
    arr.splice(arr.indexOf(Math.min(...arr)), 1)
    return arr;
}

우선 [-1] 이 리턴될 경우는 arr.length 가 1인 경우 뿐이므로 미리 리턴해버린다

그 후 arr 배열에서 가장 작은 수의 index 값을 splice 로 날려주면 끝이다 !

 

 

'사전캠프' 카테고리의 다른 글

26일차 - 알고리즘 풀이  (0) 2024.07.25
25일차 - 알고리즘 풀이  (3) 2024.07.24
23일차 - 알고리즘 풀이  (3) 2024.07.22
22일차 - 알고리즘 풀이  (0) 2024.07.19
21일차 - Javascript 입문 수업  (0) 2024.07.18

+ Recent posts