오늘은~~~~~~~

저번에 수업에 이어서 생활코딩의 

 

함수 !

들어가기 앞서서, 

 

 

 

알고리즘 문제 하나를 풀고 시작하도록 하겠다

 

 

 

제일 바보같고 멍청하고 단순하고 무식한 방법으로 시작한다.  

경악 을 금치 못하는 코드를 완성했다.

 

50조가 될지 모르는 n을 제곱근을 찾을 때 까지  i+=1 씩 증가시키며 찾는 코드가 되었다.

심지어 제곱근이 정수가 아닌 n의 경우는 무조건 i == n 이 될 때 까지 계산을 해야한다.

 

실무에서 이런 코드를 짰다면  머지않아 직장을 잃게 될 것이다.

 

 

근속을 위해 15일차에 잠깐 배웠던 내용중에 위 함수를 활용 해 보자.

Math.sqrt(n) 이 정수일 때와 그 외만 구분하면 훨씬 그럴싸한 코드가 될듯하다.

 

추가로, 값이 정수인지를 판별하기 위해 Number.isInteger() 함수를 급조해왔다.

 

 

function solution(n) {
    var answer = 0;
    if (Number.isInteger(Math.sqrt(n)) == true ) {
        answer = (Math.sqrt(n)+1)*(Math.sqrt(n)+1)
    }
    else { answer = -1}

    return answer;
}

n 의 제곱근 을 구해서, 그 값이 정수인 경우와 그렇지 않은 경우만 구분하면 되기 때문에 

불필요한 연산이 사라지고 코드도 그럴싸 해졌다.

 

생활 코딩에서 자주하는 말이 있다.

 

늘, 극단적인 상황에 대비해야 한다.

 

입문자임에도 분명하게 느껴진다.

그러기 위해선 알아야 한다.

 

 

그럼 다시 함수 학습을 시작하자.

 

함수란 ,

하나의 로직을 재실행 할 수 있도록 하는 것으로 코드의 재사용성을 높여준다 

 

여기서 중요한것은 재사용성 이다.

여기저기 퍼져있는 동일한 부류의 코드를 함수로 묶으면서

쓰기도 편하고, 수정하기도 편하고 보기에도 좋아지는 것이다. 

 

이론적으로 보면 약간 복잡한데,

function 의 기본 내장형 변수 라고 생각하면 될 듯 하다.

같은 function 이라도 인자의 값을 다르게 받는다면 다른 결과를 만들어 낼 수 있다.

쉽게 말해, 기본적인 가공 방법이 있지만 ' 어떻게 해드릴까요? '  정도의 변칙을 줄 수 있다는것

 

위의 예시 처럼, get_arguments 함수의 인자를 어떻게 입력하는지에 따라

다른 결과가 나올 수 있다.

+ Recent posts