본문 바로가기
국비학원

[국비지원] KH 정보교육원 5일차

by 도전하는 개발자 2022. 3. 29.

Day5

 오늘은 어제에 이어 조건문과 반복문 부분 진도를 나갔다. switch문과 for문으로 진도 자체는 많지 않았고, 과제를 해결하는 시간이 꽤 비중이 컸다. 비록 5일차 밖에 안 되었지만 실력이 느는 것 같아서 설레기도 한다. 오늘부터 조를 나누고 본격적으로 과제가 나오기 시작했는데, 조마다 브레인 스토밍, 협업을 강조하시는 수업 진행방식이 어색하고 불편하기해도 장점이 확실히 있는 것 같다. 조원들과 대화하며 실력이 좋으신 분들이 꽤 있다는 것 느꼈다. 나도 그 분들에게 뒤쳐지지 않기 위해 열심히 해야겠다. 

 

중첩 if 문 (Nested if statement)
주사위 구하는 코드 - switch문으로 표현!

if문 말고 switch문으로도 이렇게 주사위를 구하는 코드를 만들 수 있다.

switch문의 경우 break를 생랼하지 않도록 주의하자

 

switch문 올수 있는 타입
1. 정수타입  int (실수타입은 불가)
2. 문자타입  char
3. 문자열타입 string
4. 열거 enum (아직 안 배움!)

 

switch문 - char 타입
switch문 - string 타입
break 없는 swtich문의 활용

원래 switch 문을 사용할 때는 case가 끝날 때 마다 break; 를 사용하여 마감을 해주어야 하지만

위와 같이 의도적으로 break를 생략하여 작성자가 원하는 값을 출력시킬 수도 있다.

 

ex) [현재시간 10시]

     업무를 봅니다.

     외근을 나갑니다.

 

 

반복문
중괄호 블록 내용을 반복적으로 실핼항 때 사용
1. for문
2. while문
3. do-while문

 

for문 : 반복횟수를 알고 있을 때 주로 사용한다.

for (초기식; 조건식; 증감식) {         ---> 초기식은 딱 한번 실행
           실행문                          ---> 조건식이 true일 경우
}                                            ----> 끝나면 증감식으로간다, 이 후 조건식 -> 실행문

 

초기식 ---> 조건식 --조건식이true--> 실행문 --> 증감식 --> 조건식 ....  --조건식이false--> 종료

 

for문 - 1부터 10까지 출력

 

for문 - 초기식, 조건식, 증감식의 생략

 

* 복합대입연산자 : ( A += 1; )  = ( A = A + 1; ) 

 

초기식은 for문 위에서 정의되었다면 생략가능
증감식도 for문 안에서 쓰여있다면 생략가능
조건식도 생략가능 
셋다 생략이면 무한루프임 이 경우 반드시 탈출조건을 넣어야한다 break;

 

for문 - 실수타입 카운터 변수 불가!

 

for문의 활용 - 구구단

과제1

 

1. 동굴의 높이 = 300미터
   하루동안 올라갈 수 있는 최대 높이 = 40미터
   자는 동안에, 자연스럽게 미끄러지는 높이 = 17미터

2. 어떤 사람이 걸어가다, 이 동굴에 빠졌어요.
    이때, 이 사람은 몇일만에 동굴에서 빠져나올수가 있을까!?

3. 주의사항1) 
   만일, 사람이 딱 동굴의 높이까지 올라갔다면,
   이것이 동굴을 빠져나온걸까요!? 
   

    주의사항2)
   사람이 동굴에서 빠져나왔는지를 체크하는 시점이, 하루동안 올라가서 해야 할까요?
   아님, 잠들어서 미끄러지 이후에 해야 할까요?

 

알고리즘 

Step.1 낮동안 열심히 올라갑니다(40미터)
Step.2 현재 올라간 높이와 동굴의 높이(400미터) 비교합니다.
         2-1. if 현재 높이 > 동굴의 높이 이면, 종료합니다.
         2-2. if 현재 높이 < 동굴의 높이 이면, Step.3을 수행합니다.
Step.3 밤이되고 피곤해서 잠을 자면서 미끄러 집니다(17미터)
Step.4 또 하루가 지나갑니다.
Step.5 다시 Step.1 ~ Step.4를 반복합니다.

 

위에서 각 Step 을 코드로 옮기고 테스트 해봅니다. 

예상햇던 결과가 나오지 않으면, 다시 위의 Step 들을 수정/추가/삭제 및
더 구체화 하면서, 다시 테스트 -> 수정 -> 테스트를 반복해서,
예상했던 결과가 나오고, 그 과정이 효율적으로 될 때까지 Step을 반복합니다.

 

for문 무한루프, if-else문을 활용한 풀이

 

코드로 먼저하고 쓰려고 하면 안된다!! 알고리즘을 먼저 만들어라!!!!
가장 추상적인 레벨에서 수행해야할 step들을 순서에 맞게 작성하고
코드로 바로 옮길 수 있는 수준까지 구체화 하세요
(알고리즘 작성 -> 테스트 -> 수정 및 구체화 -> 테스트 반복)
이렇게 해야 코딩테스트 통과할 수 있고 일할 때도 문제없이 처리가 가능하다!

 

과제 2

n! 을 구하여라

-> 단순히 코드를 짜는게 아닌, 알고리즘을 만들어보세요