2 분 소요

배운점

1. 반복문

코드들이 반복적으로 실행되도록 할 때 사용된다

for문


public class Main {
  public static void main(String[] args) {

    for(/*초기화; 조건식; 증감식*/) {
      // 반복 실행될 구문

    }
  }
}
  • for문은 조건식이 참인 동안 주어진 횟수만큼 실행문을 수행한다(수행횟수를 알 때)
  • 초기화는 for문이 시작 할 때 최초 한번만 수행된다
  • 조건식 안의 값이 true면 실행하고 false면 반복문을 종료한다
  • 증감식은 반복 횟수를 결정한다

향상된 for문(Enhanced for문)


public class Main {
  public static void main(String[] args) {
    int[] num = {1, 2, 3, 4, 5};

    for(int elements : num) {
      System.out.println(elements);

    }
  }
}
  • 컬랙션 객체를 처리할 목적으로는 향상된 for문을 사용한다
  • 위 코드는 num안에 있는 요소들을 출력하는 코드이다

while문


public class Main {
  public static void main(String[] args) {
    int cnt = 1;

    while(조건식) {
      // 조건이 참일 경우 실행될 구문
      cnt++ // 증감식
    }
  }
}
  • while문은 조건식이 true일 경우 무한히 반복한다
  • 정해진 횟수가 없을 때 사용하기 좋다
  • while문을 탈출하기 위한 코드를 꼭 작성해야한다

break문과 continue문


public class Main {
  public static void main(String[] args) {
  for(/*초기화; 조건식; 증감식*/) {
      if(/*조건식*/) break;
      else if(/*조건식*/) continue;
      // 반복 실행될 구문

    }
  }
}
  • break문은 가까운 반복문을 탈출할 때 사용한다
  • continue문은 다음 반복으로 넘어갈 때 사용한다


응용 문제


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class recurrenceRelation {
    public static void main(String[] args) throws IOException {

        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(bf.readLine());

        long[] dp = new long[36];

        dp[0] = 1;
        dp[1] = 1;

        for(int i = 2; i < 36; i++) {
            for(int j = 0; j < i; j++) {
                dp[i] += dp[j] * dp[i - 1 - j];
            }
        }
        System.out.println(dp[n]);
    }
}

다이나믹 프로그래밍 알고리즘 문제 백준_점화식

import java.util.Scanner;

public class pascal_Triangle {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int k = sc.nextInt();

        int[][] square = new int[n][n];

        for(int i = 0; i < n; i++) {
            square[0][i] = 1;
            square[i][0] = 1;
        }

        for(int i = 1; i < n; i++) {
            for(int j = 1; j < n; j++) {
                square[i][j] = square[i][j-1] + square[i-1][j];
            }
        }

        for(int i = 0; i < n; i++) {
            if(i == k - 1) {
                System.out.println(square[i][n - 1 - i]);
            }
        }
    }
}

다이나믹 프로그래밍 알고리즘 백준_파스칼의 삼각형
이와 같이 반복문은 자주 쓰이는 문법이다

느낀점


오늘은 이론 공부보다는 실습 공부를 더 많이 한 것 같다.

다른 메소드의 사용 없이 순수 for문 만으로 문제를 푸는건 오랜만이라서
생각보다 문제를 푸는데 시간이 걸렸던 것 같다.

그래도 코틀린 문제를 풀 때는 다음에 어떤 문제가 나올지 기대되서
푸는 재미가 있는 것 같다!!

오늘 복습하는 시간보다 알고리즘 문제를 푸는데 시간이 더 많이 쓰인 것 같지만
이것 또한 반복문을 숙달하기 위한 과정이라고,,, 생,, 생각한다!!!

매일 백준 2문제, 공부, TIL 블로그 작성 등 생각보다 할 일이 많다,,,
나중에 프로젝트 시작하면 몸이 남아나질 않을 것 같은 느낌이,,,,!!

그래도 날 부러트리지 못하는 시련은 날 더 강하게 만들 뿐이다!!

댓글남기기