회고

[JavaScript] 기초 제어문-2

Happy Programmer 2022. 4. 28. 20:50

Chapter3. 반복문
1.반복문을 활용하여 단순한 기능을 반복하여 수행할 수 있다.
2.반복문(for문)과 문자열, 숫자를 이용해 반복적으로 코드를 실행시킬 수 있다.
3.기본적인 for문 (for (let i = 0; i < 5; i++))을 응용하여 다양한 for문을 만들 수 있다.
4.for문과 while문의 차이에 대해서 설명할 수 있다.
5.반복문과 조건문을 응용하여 특정 조건에서만 코드가 실행되도록 할 수 있다.
6.이중 for문을 이해하고 활용할 수 있다.

 

1.반복문을 이용해 버그확인, 자동합계, 홀수체크, 구구단출력, 배수 체크 , 랜덤 문자열 내부의 철자 갯수 확인, 랜덤 숫자구성 문자열 중 가장 큰 수 찾기, 약수합계 구하기, 소수찾기,  범위 소수 갯수 찾기 등 여러가지 기능을 사용할 수 있다.

 

2.for의 초기화, 조건설정, 증감문을 통해 원하는 형태로 반복적으로 코드를 실행시킬 수 있다.

 

3. for문 내부에 함수적용 또는 리턴값에 추가 함수적용 등을 통해 원하는 문제를 해결할 수 있다.

 

4.for문은 직관적으로 보기가 깔끔하고 while문은 한번에 횟수를 파악하기 힘들다는 단점이 있다. for문은 특정 횟수에 종료는 문제 해결에 자주 사용하고 while문은 break등을 사용하거나 무한반복 등 횟수파악을 하지 않아도 되는 문제에 주로 사용한다.

 

5.반복문 내부에 조건문을 이용해 조건을 걸어 증감되는 값에 따라 작동, 비작동을 결정할 수 있다.

 

6.두가지 이상의 변수가 상호작용하며 계산 또는 동작이 수행되야 하는 경우 이중 for문을 사용하며 for문 내부에 조건문을 만들어 필요한 값들만 이중for문(내부for문)에 들어가 작동하게 할 수 있다.

 

반복문은 오히려 정처기능사 공부 때 배운 알고리즘이 생각나 더 쉽게 문제를 풀 수 있었던 것 같다.

생각보다는 수월하게 문제를 다 풀었다고 생각했는데 아고라 스테이츠를 보니 시간복잡도라는 중요한 개념에 대한 이야기가 있었다.

 

단순히 결과만 원하는 값을 얻어낼 수 있다고 해도 극단적으로 한달, 1년, 10년이 걸린다면 누가 그 프로그램을 이용할까라는 생각이 들었다. 소수를 구할 때 단순히 1~str.length -1로 하고 1로만 나눠지는 1이 아닌 수로 설정을 했는데 제곱근에 정수를 씌우고 그 값까지만 하고, 짝수는 2를 제외한 나머지는 전부 계산자체를 하지 않는 4배정도 더 효율적인 방식을 보며 반성하게 된다.

 

##5.23 - 이렇게 단순하게 작성했을지 몰랐는데 생각을 조금 덜 한것 같다. 간단하게 1만이라는 값을 넣는다고 할 때 저 당시 만든 함수로는 3~10000 (9998개)를 조회해야 하지만 제곱근100까지면 1~100으로 100개, 그리고 1, 2, 2의배수를 제외하면 49개가 된다.  9998/49= 1만까지만 해도 이미 204배의 차이가 존재하는 것을 볼 수 있는데 백 또는 몇백정도의 값은 암산으로도 소수판별을 쉽게 할 수 있기 때문에 이용하지 않을 것이라고 가정하면 제곱근을 이용하지 않은 함수는 '쓰레기'라고 볼 수 있을 것 같다.

 

 

코드를 단순히 동작하는 것에만 신경쓰지 않고 어떻게 하면 더 효율적인지를 고민하는 시간을 조금씩이라도 문제마다 가져야 겠다.