프로그래밍/수업일지 (39)

728x90

 

수업내용 정리 (Java)

 

1.반복문_break_continue

 1-1) break: 멈추기

for(int i=1; i<=10; i++) {
	if(i==5) {
		break;
	}
	System.out.println(i);
}
  • for문은 i가 10보다 작거나 같을 때까지 반복하여 출력하라는 식인데
  • if문을 넣음으로 i가 5일때 break, 출력은 4까지만 된다.

 

 1-2) continue: 건너뛰기

for(int i=1; i<=10; i++) {
	if(i==5) {
		continue;
	}
	System.out.println(i);
}
  • for문은 i가 10보다 작거나 같을 때까지 반복하여 출력하라는 식인데
  • if문을 넣음으로 i가 5일때 continue, 출력은 5를 뺀 나머지 1~10이 출력된다.

 

2. 반복문_while

while(조건문){
	
}
  • 조건문이 참일 동안에 반복해서 실행

 

while(1 == 1) {
	System.out.println("자바는 즐거워");
}
  • 조건문이 참이고, while은 조건문이 참일 동안에 실행한다고 그랬으니 이 식은 "자바는 즐거워"가 무한으로 출력된다.

 

int i = 1;
while(i < 100) {
	System.out.println("자바는 즐거워");
    i++;
}
  • i는 1이고, while은 10보다 작을 동안에 실행한다.
  • i++;을 씀으로 한 번 실행할 때마다 i에 1씩 추가가 되므로 "자바는 즐거워"가 99번 출력된다.
int i = 1;
while(i < 100) {
	System.out.println("자바는 즐거워");
    i++;
    if (i == 5){
    	break;
    }
}
  • 이 경우, if문으로 i가 5가 되면 break하라는 식이 적혀있으니, 다시 실행되기 전에 멈춰서 "자바는 즐거워"가 4번 출력된다.

 

 2-1 while_예제

// 1~100까지의 합
int sum = 0;
int i = 1;
while(i <= 100) {
    sum=sum+i;
    i++;
}
System.out.println(sum);
  • i가 100보다 작거나 같을 때까지 반복
  • 반복할 때마다 i가 1씩 증가

 

Scanner sc = new Scanner(System.in);

while(true){
	System.out.print("숫자 입력> ")
	int num = sc.nextInt();

	if(num == 0){
		break;
	}
	System.out.println("입력받은 값: "+num);
}
System.out.println("반복문 종료");
  • 숫자를 입력받고, 입력받은 숫자를 다시 출력
  • 입력받은 숫자가 0이면 while을 빠져나와서 "반복문 종료" 출력

 

Scanner sc = new Scanner(System.in);

while(true) {
	System.out.print("숫자 입력> ");
	int num = sc.nextInt();
	
	if(num==0) {
		break;
	}
	if(num%15==0) {
		System.out.println("입력받은 값: "+num+"는 3과 5의 배수입니다.");
	}else if(num%3==0) {
		System.out.println("입력받은 값: "+num+"는 3의 배수입니다.");
	}else if(num%5==0) {
		System.out.println("입력받은 값: "+num+"는 5의 배수입니다.");
	}else {
		System.out.println("입력받은 값: "+num);
	}
	
}
System.out.println("반복문 종료");
  • 숫자를 입력받고, 입력받은 숫자가 3의배수, 5의배수, 3과5의배수일 경우, 해당 숫자가 무엇의 배수인지 출력
  • 입력받은 숫자가 0이면 while을 빠져나와서 "반복문 종료" 출력

 

 2-2 while_예제(자판기)

Scanner sc = new Scanner(System.in);
int money = 10000;

while(true) {
	System.out.println("======자판기=====  잔액: "+money+"원");
	System.out.println("1.콜라(1,000원) 2.사이다(1,200원) 3.우유(1,500원) 0.종료");
	System.out.print("메뉴 선택> ");
	int menu = sc.nextInt();
	
	if(menu == 1) {
		if(money>=1000) {
			System.out.println("콜라 선택");
			money = money-1000;  // money -= 1000
		}else {
			System.out.println("잔액 부족입니다.");
		}
	}else if(menu == 2) {
		if(money>=1200) {
			System.out.println("사이다 선택");
			money -=1200;
		}else {
			System.out.println("잔액 부족입니다.");
		}
	}else if(menu == 3) {
		if(money>=1500) {
			System.out.println("우유 선택");
			money-=1500;
		}else {
			System.out.println("잔액 부족입니다.");
		}
	}else if(menu == 0) {
		System.out.println("프로그램 종료");
		break;
	}else {
		System.out.println("없는 번호입니다.");
	}
	
	System.out.println();
}
  • 입력받은 수가 1일 때
    잔액(money)이 1000원 이상일 경우에만 콜라 선택이 되고, 아닐 경우 "잔액이 부족합니다." 출력
  • 입력받은 수가 2일 때
    잔액(money)이 1200원 이상일 경우에만 사이다 선택이 되고, 아닐 경우 "잔액이 부족합니다." 출력
  • 입력받은 수가 3일 때
    잔액(money)이 1500원 이상일 경우에만 우유 선택이 되고, 아닐 경우 "잔액이 부족합니다." 출력
  • 입력받은 수가 0일 때, "프로그램 종료"를 출력하고 break가 있으니 while문을 빠져나온다.
  • 입력받은 수가 그 외의 숫자일 경우, "없는 번호입니다." 출력

 

 2-3 while_예제(로그인)

Scanner sc = new Scanner(System.in);
String id = "test";  //회원가입한 아이디
String pw = "1234";  //회원가입한 비밀번호

while(true) {
	System.out.println("=====홈페이지=====");
	System.out.print("아이디 입력> ");
	String loginId = sc.next();
	System.out.print("비밀번호 입력> ");
	String loginPw = sc.next();
	
	if(loginId.equals(id)&&loginPw.equals(pw)) {
		System.out.println("로그인 성공!");
		break;
	}else {
		System.out.println("로그인 실패");
		System.out.print("로그인 재시도 (Y/y)> ");
		String re = sc.next();
		if(!(re.equals("Y") || re.equals("y"))) {
			break;
		}
	}
	
	System.out.println();
}

System.out.println("프로그램 종료");
  • 회원가입한 아이디와 비밀번호를 제대로 입력했을 때, "로그인 성공!" 출력 후 break로 while문을 빠져나온다.
  • 회원가입한 아이디와 비밀번호를 제대로 입력하지 못하면 "로그인 실패"를 띄우고 로그인 재시도를 할 것인지 묻는 말을 출력
    이후 입력받은 답이 "Y", "y"가 아닐 경우 break를 통해 while문을 빠져나온다.
    "Y", "y"인 경우, 다시 로그인 시도를 한다.

 

 2-4 while_예제(성적)

Scanner sc = new Scanner(System.in);

boolean run = true;

while(run) {
	System.out.print("이름> ");
	String name = sc.next();
	System.out.print("국어> ");
	int kor = sc.nextInt();
	System.out.print("영어> ");
	int eng = sc.nextInt();
	System.out.print("수학> ");
	int mat = sc.nextInt();
	int total = kor+eng+mat;
	double avg = total / (double)3;
	String grade = "";
	
	if(avg >= 90) {
		grade = "A";
	}else if(avg >= 80) {
		grade = "B";
	}else if(avg >= 70) {
		grade = "C";
	}else if(avg >= 60) {
		grade = "D";
	}else {
		grade = "F";
	}
	
	System.out.println();
	System.out.println("이름\t국어\t영어\t수학\t총점\t평균\t학점");
	System.out.println("===================================================");
	System.out.printf("%s\t%d\t%d\t%d\t%d\t%.2f\t%s\n",
			name, kor, eng, mat, total, avg, grade);
	
	//printf: % 위치에 순서대로 대입된다. %s %d 등, % 뒤 영어는 타입에 따라 달라진다.
	//f 앞에 .2를 입력한 이유는 소수점을 2자리 숫자만 출력하기 위해서.
	
	System.out.print("계속 입력하시겠습니까? (Y/y)> ");
	String re = sc.next();
	if(!(re.equals("Y")||re.equals("y"))) {
		break;
	}
	
	System.out.println();
}
  • 콘솔창에서 이름, 국어 점수, 영어 점수, 수학 점수를 입력받아 총점, 평균, 학점을 계산하는 식
  • "Y", "y"를 입력하면 다시 입력할 수 있고, 이 외를 입력하면 종료된다.
  • ! printf
    System.out.printf("출력 서식", 출력할 내용);
    %d (정수형 출력)
    %s (문자형 출력)
    %f (실수형 출력)
    %c (문자형 출력)
    %n (줄 바꿈)
    %b (boolean 출력)

출력 내용

 

 2-5 while_예제(up&down)

Scanner sc = new Scanner(System.in);
int answer = (int)(Math.random()*31)+1;

int sum = 0;
int hp = 5;

while(true) {

	if(hp<=0) {
		System.out.println("시도 가능 횟수를 모두 사용하셨습니다.");
		System.out.println("Game Over!");
		break;
	}
	
	System.out.println("============up&down============");
	System.out.println("1~31까지 숫자를 입력하세요. 시도 횟수 "+(5-hp)+"/5");
	System.out.print("숫자 입력> ");
	int num = sc.nextInt();
	sum++;
	
	if(num>32) {
		System.out.println("1~31 사이의 숫자를 입력해주세요.");
		hp--;
	}else if(num > answer) {
		System.out.println("down!");
		hp--;
	}else if(num < answer) {
		System.out.println("up!");
		hp--;
	}else if(num == answer && sum == 1) { 
		System.out.println("정답입니다!");
		System.out.println("첫 시도로 정답을 맞추셨습니다!");
		break;
	}else if(num == answer) {
		System.out.println("정답입니다!");
		System.out.println("시도 횟수: "+sum);
		break;
	}
	System.out.println();
}
System.out.println("up&down 종료");
  • 1~31 사이의 숫자를 랜덤으로 입력받아 그 숫자보다 낮은 수를 입력하면 up, 높은 수를 입력하면 down이 출력
  • 첫 시도로 정답을 맞추면 "첫 시도로 정답을 맞추셨습니다!" 출력
  • 정답을 맞추면 시도횟수와 "정답입니다!" 출력
  • 5회 시도에 못맞추면 "Game Over" 출력

 


 

전체 피드백

 문제를 너무 간단하게만 생각하여 풀려고 하는 경향이 있는 것 같다. 생각을 좀 더 깊이해야할 것 같다.

 처음 배우는 것의 문제를 풀 때, 이미 배운 것들을 응용해서 풀 수 있는데도 그러지 않다가 예제를 한 번이라도 봐야 응용하기 시작하는 것 같다.

 


728x90
728x90

 

수업내용 정리 (Java)

 

1. Scanner

import java.util.Scanner;

Scanner sc = new Scanner(System.in);
  • Scanner 첫부분은 무조건 대문자
  • Scanner를 사용하려면 import로 Scanner 클래스를 호출해줘야 한다.
  • 콘솔창에서 데이터를 입력받을 수 있다.

 

int a = sc.nextInt();
  • 입력받은 데이터를 a에 저장

 

2. 조건문_if (예제)

 문제 > 90 이상이면 'A', 80 이상이면 'B', 70 이상이면 'C', 60 이상이면 'D', 60 미만이면 'F'

if(a >= 90) {
	System.out.println(a + "는 A입니다.");
}else if(a >= 80) {
	System.out.println(a + "는 B입니다.");
}else if(a >= 70) {
	System.out.println(a + "는 C입니다.");
}else if(a >= 60) {
	System.out.println(a + "는 D입니다.");
}else if(a < 60) {
	System.out.println(a + "는 F입니다.");
}else {
	System.out.println("오류");
}

 

 문제 > 숫자 두 개를 받아 계산하기

System.out.print("첫번째 숫자> ");
int num1 = sc.nextInt();   // 콘솔 창에서 입력받아올 데이터(첫번째 숫자)
System.out.print("두번째 숫자> ");
int num2 = sc.nextInt();   // 콘솔 창에서 입력받아올 데이터(두번째 숫자)

System.out.println("1.더하기 2.빼기 3.곱하기 4.나누기 5.나머지");
System.out.print("메뉴선택> ");
int menu = sc.nextInt();   // 콘솔 창에서 입력받아올 데이터(메뉴 선택)

if(menu == 1) {
	System.out.println(num1+" + "+num2+" = "+(num1+num2));
}else if(menu == 2) {
	System.out.println(num1+" - "+num2+" = "+(num1-num2));
}else if(menu == 3) {
	System.out.println(num1+" * "+num2+" = "+(num1*num2));
}else if(menu == 4) {
	System.out.println(num1+" / "+num2+" = "+(num1/(double)num2));
}else if(menu == 5) {
	System.out.println(num1+" % "+num2+" = "+(num1%num2));
}else {
	System.out.println("오류!");
}
  • /(나누기)에 (double)을 붙이면 정수를 실수로 형변환한다.

 

 문제 > 입력받은 수가 3의 배수인지, 5의 배수인지, 둘 다인지, 아닌지 출력

Scanner sc = new Scanner(System.in);
System.out.println("숫자입력> ");

int a = sc.nextInt();
int b = sc.nextInt();

if(a != 0 && (a % 3 == 0 || a % 5 == 0)) {
	if(a % 3 == 0 && a % 5 == 0) {
		System.out.println("3과 5의 배수");
	}else if(a % 5 == 0) {
		System.out.println("5의 배수");
	}else {
		System.out.println("3의 배수");
	}
}else {
	System.out.println("해당 없음");
}

 

 문제 > 로그인 (아이디가 틀렸습니다. 비밀번호가 틀렸습니다. 로그인 성공)

Scanner sc = new Scanner(System.in);

String a = "test";   // 회원가입한 아이디
String b = "1234";   // 회원가입한 비밀번호

System.out.print("아이디 입력> ");
String id = sc.next();    // 콘솔 창에서 입력받아올 데이터
System.out.print("비밀번호 입력> ");
String pw = sc.next();    // 콘솔 창에서 입력받아올 데이터

if(id.equals(a) || pw.equals(b)) {
	if(id.equals(a) && pw.equals(b)){
    	System.out.println("로그인 성공");
    }else if(!id.equals(a)){
    	System.out.println("아이디가 틀렸습니다.)");
    }else{
    	System.out.println("비밀번호가 틀렸습니다.");
    }
}else {
	System.out.println("로그인 실패");
}
  • String은 같다는 것을 ==이 아닌 .equals()로 비교하고, 같지 않다는 것은 없어서 .equals()를 붙이고 앞에 !를 붙이면 된다. (괄호 안에 비교할 것을 입력)

 

3. 조건문_switch

switch(a) {
case 1:
	System.out.println("a는 1입니다.");
	break; // break가 없으면 그 밑으로 계속 실행함
case 2:
	System.out.println("a는 2입니다.");
	break;
case 3:
	System.out.println("a는 3입니다.");
	break;
default:  // else와 같음
	System.out.println("a는 1, 2, 3이 아닙니다.");
}
  • if처럼 해당하지 않으면 다음으로 넘어간다.
  • case는 비교가 불가
  • break가 없으면 해당하는 case부터 계속 실행한다.
  • default는 else와 같다. 위에서 해당하지 않은 경우에 실행한다.

 

 3-1) 조건문_switch (예제)

int sum = 100;
int num = 2;

switch(num) {
case 1:
	sum = sum+100;
case 2:
	sum =100;
case 3:
	sum = sum+200;
case 4:
	sum = 200;
case 5:
	sum = sum+300;
	break;
default:
	sum = 300;
}
  • 해당 식의 출력 값은 500.
  • 시작하는 case는 2지만 break가 case 5에 있기 때문에 case 2부터 5까지 계속 실행한다.
case 2:
	sum = 100;		// sum에 100을 대입 sum == 100
case 3:
	sum = sum+200;		// sum에 200을 더함 sum == 300
case 4:
	sum = 200;		// sum에 200을 대입 sum == 200
case 5:
	sum = sum+300;		// sum에 300을 더함 sum == 500
	break;

 

4. 반복문_for

for(초기값; 조건식; 증감식) {
	실행문;
}
  • 초기값이 조건식에서 참이면 실행문을 실행하고, 증감했을때 조건식에서 참이면 다시 실행문을 실행하는 것을 반복하다가 조건식에서 거짓일때 for문이 종료된다.
  • 조건식이 참일 때까지 for문 반복

 

 4-1) 반복문_for (예제)

 문제 > 1부터 10까지 출력

for(int i=1; i<=10; i++){
	System.out.println(i);
}

 

 문제 > sum에 100까지 누적해서 합을 출력

int sum = 0;

for(int i=1; i<=100; i++) {
	sum = sum+i;		// sum += i; 와 같음
}
System.out.println(sum);

 

 문제 > 1~100부터 3의 배수, 5의 배수의 개수를 출력

int sum3 = 0;
int sum5 = 0;

for(int i=1; i<=100; i++{
	if(i%3 == 0) {
		sum3 = sum3+1;
	}
	if(i%5 == 0) {
		sum5 = sum5+1;
	}
}
System.out.println("1~100까지 3의 배수의 개수는: "+sum3);
System.out.println("1~100까지 5의 배수의 개수는: "+sum5);

 

 문제 > 구구단을 가로로 출력

 1- 일반 구구단

for(int i=2; i<10; i++) {
	System.out.println(i+"단");
	for(int j=1; j<10; j++) {
		System.out.println(i+" * "+j+" = "+(i*j));
	}
	System.out.println();
}

2- 가로로 출력한 구구단

for(int i=0; i<10; i++) {
	for(int j=2; j<10; j++) {
		if(i == 0) {
			System.out.print(j+"단"+"\t\t");
		}else {
			System.out.print(j+" * "+i+" = "+(i*j)+"\t");
		}
	}
	System.out.println();
}
출력 예시)

2단		3단		4단		5단
2 * 1 = 2	3 * 1 = 3	4 * 1 = 4	5 * 1 = 5
2 * 2 = 4	3 * 2 = 6	4 * 2 = 8	5 * 2 = 10
  • ln을 사용함으로 단을 나눠버리면 다시 위로 돌아가 수정/작성할 수 없으므로 단을 나누기 전에 해결해야 가로로 출력 할 수 있다.
  • 가로로 출력하기 위해서는 단(1- 식의 i)과 곱할 수(1- 식의 j)의 자리를 바꿔주면 가능하다.
  • 2단~9단을 한 번만 적기 위해서는 반복할 수 없도록 걸러줘야 한다.
    걸러주기 위해서 곱할 수(2- 식의 i)를 0으로 내려주고, for문 안의 for문에서 if를 사용하여 i가 0일 때는 j단을 출력한다고 조건을 걸어준다. else로는 0이 아닐 때에는 구구단을 출력한다.

 


 

질문한 내용이나 어려웠던 점 메모

  1. for문 문제에서 배수의 개수를 출력하는 식을 만들때 %랑 /를 헷갈려서 /로 식을 만들다가 안 풀려서 물어봤다.
    % : 나머지
    / : 나누기
  2. 구구단을 가로로 출력: 구구단을 가로로 출력하는 것까지는 해결했는데 처음에 단을 늘어놓는 것이 너무 어려웠다. 단을 적으려다가 이미 출력해둔 구구단이 망가지거나 2단~9단이 구구단을 할 때마다 계속 실행되고 그래서 질문을 통해 하나하나 설명을 들었다.

 


 

전체 피드백

  • 아직은 부호가 헷갈려서 버벅거리는 부분이 있다.
  • 너무 배웠던 내용으로만 생각해서 문제를 풀기 어려웠던 것 같다. 응용하는 능력을 조금 길러야할 것 같다.
  • for문을 제하면 그래도 잘하고 있는 것 같다!

 


728x90
728x90

 

수업 내용 정리 (Java)

 

0. 콘솔 창에 표시

System.out.println("콘솔창에 띄울 내용");

콘솔창에는 괄호 안의 내용이 띄워진다. 선언했던 변수를 적거나, 따로 큰따옴표(" ") 안에 내용을 적어 띄울 수 있다.

+ 전부 타이핑하지 않고, sysout 입력 후 ctrl + space bar 키를 누르고 enter 키를 누르면 자동완성이 되어서 편하게 작성할 수 있다.

+ 자동 완성으로 입력하면 자동으로 줄바꿈이 되지만, 가로로 출력하고 싶다면 println에서 뒤에 있는 ln을 지우면 된다.

 

 

1. 변수 (variable)

  • 데이터를 사용하기 위해 저장하는 공간
  • 선언하지 않은 변수는 사용 할 수 없음
int a = 10;

a = 20;
b = 10;
  • a라는 변수를 선언하면서 초기 값은 10으로 한다.
  • 선언했던 a라는 변수의 값을 20으로 변경한다.
  • 선언하지 않은 b는 사용할 수 없다.

 

 

2. 연산자

 2-1) 산술연산자

  • + : 더하기
  • - : 빼기
  • * : 곱하기
  • / : 나누기
  • % : 나눈 후 나머지 값

 

 2-2) 비교연산자

  • a > b : a가 b보다 크다.
  • a < b : b가 a보다 크다.
  • a >= b : a가 b보다 크거나 같다.
  • a <= b : b가 a보다 크거나 같다.
  • a == b : a랑 b가 같다.
  • a != b : a랑 b가 다르다.

 

 2-3) 논리연산자

  • && : 그리고 (and)
  • || : 또는 (or)
  • ! : 아닌 (not)

 

 

3. 타입

 3-1) 정수

  • int
  • 범위: -2147483648 ~ 2147483648
  • 크기: 4byte
int a = 10;
int b = 7;

int c = a + b;
int d = a - b;

System.out.println(c);
System.out.println(d);

이 경우 c는 17, d는 3의 값으로 출력된다.

 

 3-2) 실수

  • double (소수점을 포함)
  • 범위: -1.7E308 ~ 1.7E308
  • 크기: 8byte
double a = 10.4;
double b = 3.3;

double c = a + b;
double d = a - b;

System.out.println(c);
System.out.println(d);

이 경우 c는 13.7, d는 7.10000005의 값으로 출력된다.

 

 3-3) 문자

  • char
  • 범위: 모든 유니코드 문자
  • 크기: 2byte
  • ' ' 안에 작성해야 함!
  • 유니코드 문자이기 때문에 숫자로도 표현 가능하고, 더할 수도 있다.
char a = 'ㄱ';
char b = 'ㄴ';

System.out.println(a);
System.out.println(b);
System.out.println(a+b);

이 경우 a는 ㄱ, b는 ㄴ, a+b는 25189의 값으로 출력된다.

 

 3-4) 문자열

  • String
  • " " 안에 작성해야 함!
String a = "홍길동"
String b = "심청이"

System.out.println(a);
System.out.println(b);

이 경우 a는 홍길동, b는 심청이의 값으로 출력된다.

 

 3-5) 불리언

  • boolean
  • 범위: true / false
  • 크기: 1bit
boolean a = true;
boolean b = false;

System.out.println(a);
System.out.println(b);

이 경우 a는 true, b는 false의 값으로 출력된다.

int a = 9;
int b = 4;

boolean c = a > b;
boolean d = a < b;

System.out.println(c);
System.out.println(d);

이 경우 c는 true, d는 false의 값으로 출력된다.

 

4. 형변환

 4-1) 자동형변환

  • 작은 저장 공간에서 큰 저장 공간으로 데이터 이동을 하는 경우
  • 문자형 char은 int 자동형변환으로 정수로 표현할 수 있다.
  • 오른쪽에서 왼쪽으로 변환!
int a = 10;
long b = a;

이 경우, int가 long보다 크기가 작으므로 자동형변환을 사용한다. 

 

4-2) 강제형변환

  • 큰 저장 공간에서 작은 저장 공간으로 데이터 이동을 하는 경우
  • 오른쪽에서 왼쪽으로 변환!
long a = 10000l;
int d = (int)a;

이 경우, long이 int 보다 크기가 크므로 a 앞에 (int)를 붙여 강제형변환을 사용한다.

 

5. 조건문_if, else if, else

  • if와 else if, else는 하나로 묶어 사용한다.
  • if: 조건이 참이면 실행 / else if: if가 거짓이고 else if가 참일 때 실행 / else: if도 else if도 거짓일 때 실행
int age = 5;

if(age >= 19) {
	System.out.println("성인입니다.");
}else if(age >= 13) {
	System.out.println("청소년입니다.");
}else if(age <= 7) {
	System.out.println("어린아이입니다.");
}else {
	System.out.println("오류");
}

이 경우, 선언한 변수가 5의 값을 가지고 있으니 결과는 어린아이입니다. 가 출력된다.

 


 

질문한 내용이나 어려웠던 점 메모

  • 형변환: 데이터의 값을 모르고 있었고, 따라서 크기 차이도 모르는 상황이라 더욱 이해하기 힘들었다. 강제형변환에서 괄호 안에 타입을 적는 것은 알겠는데 베이스인 값을 모르다보니 한 눈에는 알아보기 힘들었다.
  • 8bit = 1byte

 


 

전체 피드백

 사전교육 때 배웠던 내용과 겹치는 부분은 쉽게 따라갈 수 있었으나 새로운 부분은 헷갈려서 계속 봐야할 것 같다.

 


728x90
1 ··· 10 11 12 13