반복문
반복문 : 같거나 비슷한 코드를 여러번 실행시켜야 할 때 사용
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문...하.... 멘탈이 바스라졌다ㅜㅜ