코드스테이츠 백엔드 7일차 회고록
배운점
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 블로그 작성 등 생각보다 할 일이 많다,,,
나중에 프로젝트 시작하면 몸이 남아나질 않을 것 같은 느낌이,,,,!!
그래도 날 부러트리지 못하는 시련은 날 더 강하게 만들 뿐이다!!
댓글남기기