수준별 분반

조건문과 반복문 문제 풀어보기

choijming21 2024. 7. 25. 14:35

<조건문>

기본형태

if (표현식1){
  실행문1;
}else if (표현식2){
  실행문2;
}else{
  실행문3;
}

 

표현식1이 참이면 -> 실행문1 실행

표현식1이 거짓이면 -> 표현식2로 넘어감 -> 표현식2가 참이면 -> 실행문2 실행

표현식1, 2가 모두 거짓이면 -> 실행문3 실행

이때 else if 는 여러번 써도 무관하다! 

 

 

<조건문 문제>

문제1. 나이를 매개변수로 받아, 나이가 18이상이면 "Access granted"를, 그렇지 않으면 "Access denied"를 콘솔에 출력하는 함수 checkAge를 작성해 보세요.

 function checkAge(age) {
   if (age >= 18) {
     console.log("Access granted");
   } else {
     console.log("Access denied");
   }
 }

// 예시 출력

checkAge(20); // 출력: "Access granted"
checkAge(16); // 출력: "Access denied"

 

풀이

- checkAge(20) 함수를 실행해보면 조건문 if, else를 통해 표현식1(age >= 18)이 참이니까 콘솔에 "Access granted"를 출력

- checkAge(16) 함수를 실행해보면 조건문 if, else를 통해 표현식1(age >= 18)이 거짓이니까 콘솔에 "Access denied"를 출력

 

 

 

문제2. 숫자를 매개변수로 받아, 그 숫자가 짝수인지 홀수인지 콘솔에 출력하는 함수 checkEcenOdd를 작성하세요.

function checkEvenOdd(num) {
  if (num % 2 === 0) {
    console.log("짝수입니다.");
  } else {
    console.log("홀수입니다.");
  }
}

// 예시 출력

checkEvenOdd(4); // 출력: "짝수입니다."
checkEvenOdd(7); // 출력: "홀수입니다."

 

풀이

- checkEcenOdd(4) 함수를 실행해보면 짝수는 2로 나누면 몫이 0이기 때문에 참이니깐 콘솔에 "짝수입니다."를 출력

- checkEcenOdd(7) 함수를 실행해보면 홀수는 2로 나누면 몫이 0이기 아니기 때문에 거짓이니깐 콘솔에 "홀수입니다."를 출력

 

 

 

문제3. 점수를 매개변수로 받아 점수가 90이상이면 "A", 80이상이면 "B ", 70이상이면 "C", 60이상이면 "D", 그외에는 ""를 콘솔에 출력하는 함수 assignGrade를 작성하세요.

  if (score >= 90) {
    console.log("A");
  } else if (score >= 80) {
    console.log("B");
  } else if (score >= 70) {
    console.log("C");
  } else if (score >= 60) {
    console.log("D");
  } else {
    console.log("F");
  }
}

// 예시 출력

assignGrade(95); // 출력: "A"
assignGrade(85); // 출력: "B"
assignGrade(75); // 출력: "C"
assignGrade(65); // 출력: "D"
assignGrade(50); // 출력: "F"

 

풀이: 위에 처럼 else if 를 반복해서 써도 무관하다. 하지만 표현식1과 표현식2의 순서를 바꾼다면 전혀다른 출력값이 나오기 때문에 조심해야 한다.

 

 

 

 

<반복문>

 

기본형태

for(초기식;조건식;증감식){
  실행문
}

 

초기식: index가 몇부터 시작할꺼냐          ex)  i = 0

조건식: index가 어디까지 찍혀야 되냐          ex)  i < 10

증감식: index가 얼만큼씩 증가해야 되냐          ex)  i++

=> 이러면 for문은 총 10번 실행한다.

 

 

 

<반복문 문제>

문제1. 1부터 10까지의 숫자를 순서대로 콘솔에 출력하는 함수 printNumbers를 작성하세요.

function printNumbers() {
  for (let i = 1; i <= 10; i++) {
    console.log(i);
  }
}

// 함수 호출

printNumbers(); // 출력: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

 

 

쉬워서 풀이 생략..

 

 

문제2. 1부터 n까지 숫자의 합을 계산하여 콘솔에 출력하는 함수 sumUpTo를 작성하세요.

function sumUpTo(n) {
  let sum = 0;

  for (i = 1; i <= n; i++) {
    sum += i;
  }
  console.log(sum);
}

// 예시 출력

sumUpTo(5); // 출력: 15 (1+2+3+4+5)
sumUpTo(10); // 출력: 55 (1+2+3+4+5+6+7+8+9+10)

 

풀이: sumUpTo(5) 함수를 실행시키면, for문은 1,2,3,4,5 총 5번을 실행하게 된다. 5번 실행하는 동안 sum에 차례대로 i를 더하면 핪을 출력할 수 있다.

 

 

 

반복문에 대해 빠삭해지고 싶어 내가 새로 문제를 만들어서 풀어보았다!!!!!!

 

내가 만든 문제. a라는 배열이 주어졌을 때, a 배열의 요소들을 모두 합한 값을 출력해보세요.

function sum1(x) {
  let sum = 0;
  for (let i = 0; i < a.length; i++) {
    sum += a[i];
  }
  return sum;
}

let a = [1, 2, 5, 4]; 
console.log(sum1(a)); // 예상 출력 값 12

 

여기서 중요한점은 아까 위에 처럼 i를 sum에 더하면 안되고 a 배열 안의 요소들을 더해야 하기 때문에 배열 접근 방법인 a[i]를 써서 sum에 더해야 한다. 또 중요한점은 let sum = 0; (변수 선언과 할당)을 함수 안에 적어줘야 한다. 나는 함수 밖에서 적었었는데 값이 계속 틀리게 나와 문제점이 뭔지 생각해 보다가 깨닫게 되었다. 함수 밖에다가 변수 선언과 할당을 해주면 함수가 구해졌어도 sum 값이 return 해 함수에서 나오면 또 영향을 받기 때문인 것 같다. 그래서 선언과 할당을 할 때도 위치에 따라 값이 달라지기 때문에 조심해야 겠다고 생각했다.

 

 

 

문제3. 주어진 배열에서 짝수 숫자만 콘솔에 출력하는 함수 printEvenNumbers를 작성하세요.

function printEvenNumbers(arr) {
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] % 2 === 0) {
      console.log(arr[i]);
    }
  }
}

// 예시 출력

printEvenNumbers([1, 2, 3, 4, 5, 6]); // 출력: 2, 4, 6
printEvenNumbers([10, 15, 20, 25, 30]); // 출력: 10, 20, 30

 

풀이: 위에 배열 접근 방법을 써서 똑같이 코드를 짜고 짝수 숫자만 콘솔에 출력해야 하기 때문에 나머지(%)를 이용하면 된다. 이때 위 문제들이랑 다른 점은 for문 안에 if문을 사용해서 문제를 풀어야 된다는 점이다. for문으로 먼저 배열의 요소를 하나하나 찍어내고, 그다음 if문을 써서 짝수인 요소만 출력할 수 있게 나머지가 0이면 참 -> 그 요소를 콘솔로 찍어라! 이런식으로 작성해주면 된다.

 

 

 

문제4. 주어진 배열의 숫자들을 거꾸로 콘솔에 출력하는 함수 printReversed를 작성하세요.

function printReversed(arr) {
  for (let i = arr.length; i > 0; i--) {
    console.log(arr[i - 1]);
  }
}

// 예시 출력

printReversed([1, 2, 3, 4, 5]); // 출력: 5, 4, 3, 2, 1

 

풀이: 이번 문제는 좀 흥미로웠다. 초기식, 조건식, 증감식만 반대로 써주면 쉽게 문제를 풀 수 있다. 하지만 console.log(arr[i]); 로 찍어주면 5, 4, 3, 2 만 나오고 1이 찍히지 않는 오류가 발생한다. 이것은 컴퓨터가 인간과 숫자를 0부터 세어주기 때문에 발생하는 오류이다. 그러므로 배열을 거꾸로 출력해야 하는 경우에는 i 에 -1을 해줘야 원하는 결과를 얻을 수 있다.

 

 

 

 

 

.

.

.

 

 

 

# 일기

아직 나는 개발에 개자도 잘 모르는 초보이기 때문에 이렇게 간단한 문제도 너무 어려웠다 ㅠㅠ

그래서 많이 문제를 풀어봐야 조건문과 반복문이 익숙해 질 것 같아 오늘 배운 문제를 나혼자 반복해서 풀어보았다.

다시 풀어보고 블로그에 기록함으로써 한번 더 복습을 하게 되서 총 2번 복습을 했다!! 이렇게 2번 복습을 함으로써 조건문과 반복문을 어느정도 익힌 것 같아서 개발의 "ㄱ" 까지는 간 것 같다... ...(아직 갈길이 멀었지만...)

왜냐하면 나중에 웹사이트를 만들 때는 이것보다 훨씬 더 어려운 조건과 반복을 사용해야 하기 때문에 걱정이다.

이 걱정을 극복하기 위해서는 실생활에 적용을 많이 해서 문제를 풀어나가는 사고력을 길러야 겠다고 생각했다 :)

 

이 글을 읽는 여러분들도 모든일에 화이팅입니다! (저만 이 블로그 볼 것 같지만...ㅎㅎ)