TIL 3일차

HyeRyun CHOI·2021년 5월 14일
0

Bootcamp TIL

목록 보기
3/29

반복문
반복문 : 같거나 비슷한 코드를 여러번 실행시켜야 할 때 사용

for문 : 반복할 내용을 중괄호 안에 넣어줌

let sum =1;

for(let n = 2 "초기화"; n<=4 "조건식"; n=n+1 "증감문";) {
  sum = sum + n;
}
console.log(sum); // 10

while문 : 반복할 조건 중 초기화, 증감문은 따로, 조건식만 괄호 안에 넣어줌

let sum = 1;
let n = 2;

while(n <= 4) {
  sum = sum+ n;
  n = n + 1;
}
console.log(sum); // 10

반복문 코플릿
수를 입력받아 1부터 n까지의 정수로 구성된 문자열 리턴(1-2-3)
해결방법 :
1. 처음에 리턴값 출력시 -1-2-3-4...의 형태로 출력되게끔 코드 작성
2. replace 메소드를 활용하여 가장 첫번째에 걸리는 '-'을 ''로 바꿔줌
=> 반복문이 다 돌고 이후에 if로 0번째 인덱스의 값이 '-'인지 확인하고 replace사용

function num(5) {
  let str = '';
  let i = 1;
  
  while(i < 5) {
    str = str + '-' + i;
    i = i + 1;
  }  // '-1-2-3-4-5'
  
  if(str[0] === '-') {
    str = str.replace('-', '');
  }
  return str;
}  // '1-2-3-4-5'

1이상의 자연수를 입력 받아 소수인지 여부 리턴
해결방법 :
1. 1은 소수가 아님
2. 2부터 체크하여 소수 여부 반환(Math.sqrt활용) => 1이상의 자연수를 입력받기때문에 1번조건에서 1은 소수가 아니므로 2로 시작

function prime(n) {
  if(n === 1) {  // 1은 소수가 아님
    return false;
  }
  for(let i = 2; i <= Math.sqrt(n); i = i + 1) { // i가 n의 제곱근의 값까지 반복
    if(n % i === 0) { // n이 i로 나눠질 경우 1과 자기자신 외의 숫자로 나눠지는 것이 때문에 false
      return false;
    }
  }
  return true;
}

1이상의 자연수를 입력 받아 소수인지 여부 검사하여 소수만 나열
해결방법 :
1. 1은 소수가 아님
2. 2~n 까지 순차적으로 할당, 다음 for문으로 넘어가서 2~i까지 나눠보기(이중for문)
3. 소수인 값은 가장 처음에 선언한 string타입 변수에 할당되므로 최종 리턴은 선언된 변수 리턴

function primeList(n) {
  let str = '2';  // 2는 무조건 소수, 추가적인 조건 : n >= 2

  if(n === 1) return false; // 일단 1은 무조건 소수가 아니므로 무조건 false
  for(let i = 2; i <= n; i++) { // 2부터 n까지의 숫자를 반복
    let check = true;
    for(let j = 2; j < i; j++) { // 위에 for문에서 i를 받아와서 j로 다 나눠보기(이 때 j는 2부터 i까지)
      if(i % j === 0) {
        check = false; // i를 j로 나눠서 나머지가 0이면 1과 자기자신외의 약수가 존재하므로 거짓
      }
    }
    if(check && n !== 2 && i !== 2) { // n과 i가 2가 아니면서 check값도 있으면 str에 '-'와 i값을 연결
      str = str + '-' + i;
    }
  }
  return str; // 최종리턴!
} 

여담 :
이중 for문...하.... 멘탈이 바스라졌다ㅜㅜ

profile
(˘・ᴗ・˘)

0개의 댓글