JS 코플릿 반복문

Taehye.on·2023년 2월 22일
2

코드스테이츠 44기

목록 보기
8/89
post-thumbnail

👨‍🏫 반복문

전에 정리한 js의 대표적인 반복문인 for를 복습해보자.
for의 () 안에는 초기값; 조건식; 증갑식이 들어가고 코드블럭{}을 작성한다.

for (초기값; 조건식; 증감식) {
	// 실행할 코드
}

또 반복문은 중첩이 가능해 반복문 내부에 또 다른 반복문을 사용할 수 있다.

for (let i = 1; i <= 6; i++) {
	for (let j = 1; j <= 6; j++) {
		console.log(`첫번째 주사위는 ${i}, 두번째 주사위는 ${j}입니다.`);
	}
}

이를 바탕으로 코플릿 반복문 문제를 풀어보자

👨‍🏫 코플릿 반복문

문제 : 1 이상의 자연수를 입력받아 소수(prime number)인지 여부를 리턴
입력 : 인자 1:num -> number타입의 수
출력 : boolean타입을 리턴해야한다.

입출력 예시

let output = isPrime(2);
console.log(output); // --> true

output = isPrime(6);
console.log(output); // --> false

output = isPrime(17);
console.log(output); // --> true

먼저 소수에 대해 짚고 넘어가자.

🔍 소수란?

1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수다.
즉, 소수의 조건은
1. 소수는 1보다 커야한다.
2. 2를 제외한 짝수는 소수가 아니다.
3. 3부터 num 전까지 나누어 떨어지는 경우 소수가 아니다.
이 세가지로 정리할 수 있다.
이제 의사코드를 작성해보자

// 조건 1을 만족시키기 위해 num을 1로 지정해보고 결과값을 false로 정하자
// 조건 2를 만족시키기 위해 num을 2로 지정해보고 결과값을 true로 정하자
// 조건 3을 만족시키기 위해 num을 2로 나눈 나머지값을 0으로 지정해 false로 정하자.
// 입력은 number 이다
// 출력은 boolean 이다.

이제 코드를 작성하자.

👨‍🏫 코드 작성

function isPrime(num) {
  if (num === 1) {         //만약 num이 1이면 소수 조건 x
    return false;          // false
    }

조건 1 작성

function isPrime(num) {
  if (num === 1) {         //만약 num이 1이면 소수 조건 x
    return false;          // false
  }if (num === 2) {        //만약 num이 2면 소수 조건 o
    return true;           // true
    }

조건 2 작성

function isPrime(num) {
  if (num === 1) {         //만약 num이 1이면 소수 조건 x
    return false;          // false
  }if (num === 2) {        //만약 num이 2면 소수 조건 o
    return true;           // true
  }if (num % 2 === 0) {    //만약 2로 나눈 나머지 값이 0 이면 소수 조건 x
    return false;          // false
  }

조건 3 작성

여기까진 소수인지를 확인하는 조건을 적은 코드이다.
반복문을 추가하여 num값에 따라 결과를 추이해보자

function isPrime(num) {
  if (num === 1) {         //만약 num이 1이면 소수 조건 x
    return false;          // false
  }if (num === 2) {        //만약 num이 2면 소수 조건 o
    return true;           // true
  }if (num % 2 === 0) {    //만약 2로 나눈 나머지 값이 0 이면 소수 조건 x
    return false;          // false
  }
   for (let i = 3; i < num; i++) {  //3부터 num이전까지 1씩 증가
    if (num % i === 0) {           //만약 num을 i로 나눈 나머지가 0이면  소수조건 x
      return false;                // false
    }
  }
  return true;  //이 외 나머지는 소수이다
}

반복문 안에 조건문을 추가하여 소수 조건 여부를 확인하였고
마지막은 그 외의 나머지들은 소수로 출력이 되어 true로 리턴시켜 테스트하였다.

문제를 보기만하면 막막했는데 의사코드를 먼저 작성해 생각을 정리하고
코드를 순차적으로 작성을 하면서 훨씬 수월가헤 진행할 수 있었다.
아직 문제 하나 푸는데도 오랜 시간이 걸리지만 꾸준히 노력해 더 성장해야겠다

0개의 댓글