[221103] 알고리즘 수업_반복문

yeni·2022년 11월 3일
0

반복문(For)

일정 로직을 계속 반복해서 실행하는 문법
for(최초식; 조건식; 증감식){ 반복할 내용; }

  • 최초식 : 반복문을 처음 실행할 때 선언, 어디서부터 시작하는지를 결정하는 시작점
  • 조건식 : 반복문을 실행하는 조건을 설정, 해당 조건식이 true일 때만 로직을 실행
  • 증감식 : 반복문을 실행할 때마다 최초식을 증감, 반복문의 실행 횟수를 조절한다
for(let i = 0; i < 2; i++){
	console.log("안녕하세요?");
}
// 안녕하세요?
// 안녕하세요?

for문법에서는 breakcontinue 기능을 사용할 수 있다.

  • break : 원하는 구간에서 반복문을 종료
for (let i = 0; i < 5; i++){
  if(i === 3) break;
  console.log(i);
}
//0 1 2 
  • continue : 해당 구간의 반복문을 실행하지 않음
for (let i = 0; i < 5; i++){
  if(i === 3) continue;
  console.log(i);
}
//0 1 2 4

여러가지 형태의 반목문들

  1. for - in : 객체를 반복할 수 있다.
    사용범위 : 문자열, 객체, 배열
const obj = {
  name : "훈이", 
  age : 12
}

for(let data in obj){
  console.log(data, obj[data])
}

//'name' '훈이'
//'age' 12

const str = "abcde"

for(let index in str){
  
  console.log(index)
  //0 1 2 3 4
  console.log(str[index])
  //a b c d e
}
  1. for - of : 각각의 요소들을 가져올 수 있다. 성능이 떨어져서 사용에 주의!
    사용범위 : 문자열, 배열
const str = "abcde"

for (let letter of str){
  console.log(letter)
}
//a b c d e
  1. forEach : 배열에만 사용할 수 있다. for문과는 다르게 중간에 중단할 수가 없다.(중단되는 것처럼 보여지도록 코드를 작성한다)
    사용범위 : 배열
let able = false
arr.forEach((el, i)=>{
  if(!able){
    if(i ===2){
      able = true
    }
    console.log(el, i)
  }
})
//'a' 0
//'b' 1
//'c' 2
  1. while : 최초식, 조건식, 증감식이 분할되어 사용, 조건식이 종료되는 시점을 제대로 작성해주지 않으면 무한루프에 걸리게된다(주의!)
    사용범위 : for와 동일
let answer = 0;
let current = 1;

while(current !== 100){
  current++;  // 1, 2, 3, ...
  answer++;   // 0, 1, 2, ...
}

answer; //99

💯 연습문제 풀어보기

1) 숫자 더하기

문제 설명

입력되는 수에 따라 0부터 해당 수까지의 합을 구하려고 합니다.

num은 1이상의 자연수가 들어옵니다.

만약 num이 5라면 1 + 2 + 3 + 4 + 5를 모두 더한 값을 출력시켜주세요.

입력 인자

  • num은 1이상의 자연수 입니다.

주의 사항

  • for을 이용해서 문제를 풀어야 합니다.

예상 결과

sum(5) // 15
sum(3) // 6

문제 풀이

// 023 숫자 더하기

function sum(num) {
  let count = 0;

  for (let i = 1; i <= num; i++) {
    count += i;
  }

  return count;
}

2) 특정 문자열 세기

문제 설명

문자열에서 "a"가 몇 번 등장하는지 횟수를 구하는 함수를 만들려고 합니다.

반복문을 이용해 "a"의 등장 횟수를 변수 "count"에 할당하세요.

입력 인자

  • str은 문자열입니다.

주의 사항

  • for을 이용해서 문제를 풀어야 합니다.
  • 문자열도 배열입니다.
  • 대문자 "A" 문자열도 "a" 에 포함입니다.

예상 결과

countLetter("I am from Korea")                         // 2
countLetter("A day without laughter is a day wasted.") // 6

문제 풀이

// 024 특정 문자열 세기
function countLetter(str) {
  let count = 0;
  
  // 대문자>소문자로 변경해주기
  // str = str.toLowerCase();
  
  for (let i = 0; i < str.length; i++) {
    if (str[i] === "a" || str[i] === "A") {
      count += 1;
    }
  }
  return count;
}

3) 문자열삽입

문제 설명

num을 입력받아 1부터 num의 값까지 각각의 숫자 사이에 "-"이 들어간 문자열을 만들어야 합니다.

num이 3일 경우에는 "1-2-3"입니다.

입력 인자

  • num은 숫자열입니다.

주의 사항

  • for을 이용해서 문제를 풀어야 합니다.

예상 결과

makeNumber(5) // 1-2-3-4-5
makeNumber(7) // 1-2-3-4-5-6-7

문제 풀이

// 025 문자열 삽입
function makeNumber(num) {
  let str = "";

  for (let i = 1; i <= num; i++) {
    if (i < num) {
      str = str + i + "-";
    } else if (i === num) {
      str = str + i;
    }
  }
}

4) 가장 큰 수 찾기

문제 설명

str은 무작위 숫자인 문자열입니다. 해당 문자열에서 가장 큰 수를 구하는 함수를 만들어야 합니다.

만약 str에 "12345"가 들어온다면 "5"를 나타내야 합니다.

입력 인자

  • str은 문자열입니다.

주의 사항

  • str에서 각각의 문자를 숫자로 바꿔서 계산해야 합니다.
  • 비교할 수 있는 기준값이 있어야 합니다.
  • 최댓값을 저장할 수 있는 변수가 있어야 합니다.

예상 결과

bigNum("12345") // 5
bigNum("87135") // 8

문제 풀이

// 027 가장 큰 수 찾기
function bigNum(str) {
  let biggest = 1;
  for (let i = 0; i < str.length; i++) {
    if (biggest < Number(str[i])) {
      biggest = Number(str[i]);
    }
  }
}


//더 간단하게 푸는법
function bigNum(str){
 // console.log(Math.max(str))
 // 87135
  
  str = str.split('');
  console.log(str);
  //[ '8', '7', '1', '3', '5' ]
  
  console.log(Math.max(...str))
  //8
  console.log(Math.min(...str))
  //1
}

bigNum('87135');

Math.max(11,2,8,5,7,16)
//16
profile
차곡차곡 쌓는 몌으니 개발노트

0개의 댓글