코딩테스트를 대비하여 문제를 한개씩 풀어보는 게 좋을 것 같아서 인프런 강의를 구매했다.
매일은 아니더라도 꾸준히 공부해서 실력을 키워나가야지…!
Lst’s GO…!


문제 : 7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고, 고른 홀수들 중 최소값을 찾는 프로그램을 작성하세요

입력예제1 : 12 77 38 41 53 92 85 ( 주어지는 자연수는 100보다 작다. 홀수가 한 개 이상 반드시 존재한다.)
출력예제1 : 256(합) 41(최솟값)



홀수는 2로 나누었을 때 나머지가 1인 수를 구하면 되고,
최솟값은 저번에 배웠던 Number.MAX_SAFE_INTEGER 를 활용해보기로 했다.
수들을 배열로 받는다고 했을 때, 값 하나씩 비교하려면 for문을 이용해야 한다.


내가 푼 내용

function mySolution(arr){
    let answer = new Object;
    let min=Number.MAX_SAFE_INTEGER, sum=0;

    for(let i=0; i<arr.length; i++){
        if (arr[i]%2 == 0){ //홀수 판별
            sum+=arr[i];
            if(arr[i]<min){ //최솟값
                min = arr[i];
            }
        }
    }
    answer.sum = sum;
    answer.min = min;

    return answer;
}



정답코드를 보자…!

function solution(arr){
    let answer = new Object;
    let sum=0, min=1000;
    for(let x of arr){
        if(x%2===1){
            sum+=x;
            if(x<min) min=x;
        }
    }
    answer.sum = sum;
    answer.min = min;   
    return answer;
}



전제조건에서 자연수는 100보다 작은 수라고 명시를 해놨기 때문인지,
이번에는 초기값을 1000으로 두고 한 것 같다. ㅎㅎ
그리고 가장 다른 점은 for문…!
나는 항상 기본 형태의 for문에 익숙한데,
향상된 for문을 사용할 수 있다는 것을 간과했다….
사실 특정 구간까지 반복할 필요가 없는 이상, 향상된 for문이 훨씬 간단하고 쓰기도 편한데…
앞으로 향상된 for문 사용하는 것에 익숙해져야 할 것 같다 ㅠ_ㅠ
또, 다른 점이 하나 있다. 바로 값 비교하는 구문!
정확한 값을 비교할 때는 ===을 써야하는데,
이것 역시 ==에 익숙해져서 생긴 결과인 것 같다.
더 나은 것, 새로운 것들을 알게 됐다면 익숙하지 않더라도 의식적으로 쓰도록 노력해야겠다. 꼭 !!!
익숙함에 속아 안주하지 말자!