Lesson 1. for문 a → b 1씩 증가
비슷한 내용을 반복한다면 일일히 쓰는 것이 번거로울 것이다
이럴 때는 for문을 사용해 반복을 쉽게 할 수 있다
반복문 for 문의 형태는 아래와 같다
for( 초기화식 ; 조건식 ; 증감식 ) {
반복할 코드
}
초기화식에서는 for loop의 초기조건을 설정할 수 있고,
이후 조건식에 해당한다면 for loop를 진행한다
한 번 진행했다면 증감식에 의해 반복횟수를 셀 수 있다
for (let i = a; i < b; i++) {
반복할 코드
}
보통은 초기조건에서 i j k라는 변수를 사용한다
여기서 i ++는 i+=1과 같은데 ++i --i i-- 와도 같은 형태도 쓸 수 있다
앞에 붙은 것은 전위 연산자, 뒤에 붙은 것은 후위 연산자라고 부르는데
후위 연산자인 경우 코드실행이 이루어지고 이후 증가(감소)가 이루어진다
! a부터 b까지의 수를 공백을 사이에 두고 출력하려면 다음과 같은 코드를 사용할 수 있다
let a = 3, b = 6;
let result = "";
for (let i = a; i <= b; i++) {
result += (i + " ");
}
console.log(result);
Lesson 2. for문 a → b 2씩 증가
2씩 증가하려면 증감식을 고쳐주면 된다
i +=2
Lesson 3. for문 b → a 1씩 감소
for (let i = 10; i > 4; i--) {
console.log(i);
}
console.log("Done");
Lesson 4. while문 a → b 1씩 증가
for문이 아닌 다른 방법으로도 반복을 시킬 수 있다
바로 while문이다
while 은 ( ) 괄호안에 조건이 쓰여있고, 조건을 만족하는 경우에만 { } 중괄호 안의 내용을 수행한다
while (조건) {
여기에 조건을 만족할 때만 수행되었으면
하는 코드를 작성
}
JS에는 while과 비슷한 do-while문도 존재하는데
while문과 비교했을 때 do-while문은 무조건 한 번 반복문을 실행한다는 점이 다르다
do {
여기에 조건을 만족할 때만 수행되었으면
하는 코드를 작성, 무조건 한번은 실행됨
} while (조건);
Lesson 5. while문 a → b 2씩 증가
2씩 증가시키려면 반복문 안에서 원하는 증감값을 설정하면 된다
for문과 비교했을 때, 정지를 위한 변수를 따로 설정해야하는 것이 다르다는 점을 명심하자
let i = 5; // 시작 값
while (i <= 10) { // 계속 반복할 조건
console.log(i); // 원하는 코드 작성
i += 2; // 원하는 증감값 설정
}
Lesson 10. cnt 활용하기 (cnt)
let a = 3, b = 8;
let cnt = 0;
for (let i = a; i <= b; i++) {
if (i % 2 === 0) {
cnt++;
}
}
console.log(cnt);
횟수를 쓸 때는 주로 변수명 cnt를 활용한다
cnt를 0으로 초기화해두는 걸 잊지말자
Lesson 11. sum 계산하기 (sumVal)
합계를 계산할 때는 sumVal이라는 변수를 주로 활용한다
cnt와 마찬가지로 0으로 초기화해두는 걸 잊지말자
(camel case에 맞춰서 sumVal이라고 쓰는 것이다)
Lesson 12. Prod 계산하기 (prod)
조건 내의 모든 짝수의 곱을 구하는 프로그램을 짤 때에는
초기값을 1로 갖는 prod를 활용할 수 있다
let prod = 1;
let a = 3, b = 8;
for (let i = a; i <= b; i++) {
if (i % 2 === 0) {
prod *= i;
}
}
console.log(prod);
Lesson 13. continue문
continue는 if와 함께 쓰이며, 해당 조건이 만족할 경우 밑의 코드를 실행하지 않은 채로
다시 for loop를 실행하게 된다
let a = 5, b = 8;
let prod = 1;
for (let i = a; i <= b; i++) {
console.log("current val is " + i);
if (i % 2 === 0) {
console.log("val is even");
continue;
}
console.log("val is odd");
prod *= i;
}
console.log(prod);
Lesson 14. break문
반복문을 끝내려면 if와 함께 사용하는 break문을 사용해볼 수 있다
for, while문 안에서만 사용하는 break문은 continue와 유사한 방법이지만
for loop로 돌아가는 continue와는 달리 for loop를 탈출한다는 차이가 있다
let a = 3, b = 101;
let prod = 1;
for (let i = a; i <= b; i++) {
console.log("current val is " + i);
if (i % 5 === 0) {
console.log("val is multiple of 5");
break;
}
console.log("val is not a multiple of 5");
prod *= i;
}
console.log(prod);
Lesson 15. 무한 루프
입력을 몇 번 받아야할지 모르는 경우에는 while(true)를 이용해 무한루프를 만들고
break를 사용해 빠져나오는 방법을 사용할 수 있다
while (true) {
코드 1
if (조건){
코드2
break;
}
코드3
}
코드4
물론 for 문도 무한루프 만드는데 사용할 수 있다
초기화식, 조건식, 증감식을 모두 생략하면 for 내부 코드가 무한 반복된다
for (;;) {
console.log("b");
}
const fs = require("fs");
let input = fs.readFileSync(0).toString().trim().split("\n");
let index = 0;
while(true){
let num = Number(input[index++]);
if (num == 1) console.log("John");
else if (num == 2) console.log("Tom");
else if (num == 3) console.log("Paul");
else if (num == 4) console.log("Sam");
else break;
}
console.log("Vacancy");
위 코드는 예제 문제 중 하나의 풀이인데
** 이처럼 index 사용에 주의하도록 하자!
index를 조정하거나 break를 넣지 않으면 무한루프에서 빠져나올 수 없다 **
Lesson 17. 단 하나라도 만족하는 경우
a부터 b까지의 수 중 하나라도 짝수인 것이 있을 때를 확인하고 싶다면
for문을 사용함과 동시에 boolean type 변수를 활용해 해결할 수 있다
boolean (true , false)
const fs = require("fs");
let input = fs.readFileSync(0).toString().trim().split(" ");
let a = Number(input[0]);
let b = Number(input[1]);
let satisfied = false;
for (let i = a; i <= b; i++) {
if (i % 2 === 0) {
satisfied = true;
}
}
if (satisfied === true) {
console.log("Exists");
}
else {
console.log("Not exists");
}
삼항연산자 꿀팁
↓
const fs = require("fs");
let input = fs.readFileSync(0).toString().trim().split(" ");
let a = Number(input[0]);
let b = Number(input[1]);
let c = Number(input[2]);
let satisfied = true;
for (let i = a; i<=b; i++){
if(i%c==0) {
satisfied = false;
break;
}
}
console.log(satisfied?"YES":"NO");
boolean으로 작성한 경우 이렇게 삼항 연산자를 console.log(satisfied?"YES":"NO");로 사용할 수 있다
여전히 하는 실수 모음 ↓
let input = Number(fs.readFileSync(0).toString().trim().split("\n"));
이 문제입니다!
fs.readFileSync(0).toString().trim().split("\n")은 여러 줄의 문자열을 줄바꿈 기준으로 나눠서 배열로 만들어요.
그런데 여기에 Number(...)를 씌우면, 배열 전체를 숫자로 변환하려고 해서 **NaN (또는 undefined처럼 보이는 결과)**가 나올 수 있어요.
//고친코드
const fs = require("fs");
let input = fs.readFileSync(0).toString().trim().split("\n");
let satisfied = true;
for (let i=0; i<5; i++){
let x = Number(input[i]);
if (x%3!=0){
satisfied = false;
break;
}
}
console.log(satisfied?1:0);
'개인공부 > 코드트리 JS' 카테고리의 다른 글
자바스크립트 Chapter 6. 다중반복문 (0) | 2025.05.10 |
---|---|
자바스크립트 Chapter 4. 조건문 (0) | 2025.05.06 |
자바스크립트 Chapter 3. 연산자 (0) | 2025.04.29 |
자바스크립트 Chapter 2. 입출력 (0) | 2025.04.29 |
자바스크립트 Chapter 1. 기본 출력 (0) | 2025.03.04 |