TIL 1주차 - 3. 반복문

lim1313·2021년 7월 23일
0

부트캠프 TIL

목록 보기
3/49

반복문

for vs while

for

for(초기화 식; 조건식; 반복식) {문장(true일 경우)}

조건식이 false인 경우 for문을 빠져 나온다
while과 동일하게 continue, break 사용 가능

for(let i = 0; i < num; i++){문장}

while

while(조건식) {문장(true일 경우)}

while은 주로 몇 번 반복해야 할지 모르는 경우 사용한다.
for 문은 몇 번 반복해야 하는지 아는 경우 사용.
조건식이 false일 경우 while문을 빠져 나온다.

while(num > 0){
  num++
  if(num === 1){
    continue; // while 시작 부분으로 되돌아감	
  }
}

while(num === 3){
  break; // while 빠져나옴 / 완전히 멈춤
}

ex) 수를 입력받아 홀수인지 여부를 리턴해야 합니다.

function isOdd(num) {
  let numAbs = Math.abs(num)
  while(numAbs >= 0){
      numAbs -= 2
  }
  return numAbs === -1
}
let output = isOdd(155);

위와 같이 몇 번을 반복해야 할지 정확하지 않은 경우 while 사용하면 좋다.
break를 사용해도 된다.

이중 반복문

for문 안에 for문을 작성

function makeMarginalString(str) {
  let result = ""
  for(let i = 0; i < str.length; i++){
    for(let j = 0; j <= i; j++){
      result += str[j]
    }
  }
return result
}  

let output = makeMarginalString('abc');
console.log(output); // --> 'aababc'

반복문 문제 복습

문제) 소수 여부 판단

내 풀이

function isPrime(num) {
  for(let i = 2; i < num; i++){
    if(num % i === 0){
      return false
    }
  }
  if(num === 1){
    return false
  }
  return true
}
let output = isPrime(3);
console.log(output); // --> true

답안

function isPrime(num) {
  let sqrt = parseInt(Math.sqrt(num));
  if (num === 1) {
    return false;
  }
  if (num === 2) {
    return true;
  }
  if (num % 2 === 0) {
    return false;
  }
  for (let i = 3; i <= sqrt; i += 2) {
    if (num % i === 0) {
      return false;
    }
  }
  return true;
}

내 답안의 경우 i를 2부터 계속 반복하기 때문에, 불필요한 반복이 일어난다.

답안의 경우, 2로 나누어지는 경우를 따로 빼고, sqrt를 활용하여 불필요한 반복이 일어나지 않도록 코드가 작성되어 있다.

지금까지는 코드가 제대로 작동하는 것에 초점을 맞추었다면, 좀 더 실용적이고, 불필요한 작동이 이뤄지지 않는 코드를 고민해 봐야겠다.

profile
start coding

0개의 댓글