풀스택 개발자 과정 7일차

너구·2026년 5월 14일

풀스택 성장과정

목록 보기
7/79

오늘은 어제 다 못나간 선택문부터 수업을 진행하였다.


삼항 연산자 (Tenary Operator)

조건이 참이면 값 1을 반환하고 거짓이면 값 2를 반환한다.
간단한 if else 문을 대신해 사용할 수 있다

조건 ? 값1 : 값2


삼항 연산자 예제

나이가 18살 이상이면 "성인입니다", 아니면 "성인이 아닙니다"를 출력하는 코드를 작성하라. (삼항 연산자를 활용해라)

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

        String isAdult = age >= 18 ? "성인입니다" : "성인이 아닙니다";

        System.out.println(isAdult);
    }
    
}

변수의 값은 age(20)으로 설정하였다.
isAdult의 age가 19살보다 크거나 같으면 성인입니다를 출력하고 그렇지 않다면 성인이 아닙니다를 출력하는 코드를 작성하였다.

그렇기 때문에 출력값은 "성인입니다" 라고 나오는 것을 확인할 수가 있다


switch 문

입력값과 일치하는 'case' 코드를 실행한다.
'break'를 만나면 switch 문을 빠져나온다.
마지막에 'default'는 선택사항이다.

switch(입력값){
case 비교값1 : 비교값 1과 일치하면 실행할 코드 break;
case 비교값2 : 비교값 2와 일치하면 실행할 코드 break;
...
default: 모든 조건이 거짓인 경우 실행할 코드
}

Switch 문 예제

입력된 레벨에 따라 다음과 같이 출력하는 코드를 작성하라.
만약 해당되는 레벨이 없다면 "알 수 없는 레벨입니다"를 출력하라.

레벨이
1인 경우 Lv.1을 출력
2인 경우 Lv.2을 출력
3인 경우 Lv.3을 출력
4인 경우 Lv.4을 출력
5인 경우 Lv.5을 출력

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

        switch (level) {
            case 1:
                System.out.println("Lv.1");
                break;
            case 2:
                System.out.println("Lv.2");
                break;
            case 3:
                System.out.println("Lv.3");
                break;
            case 4:
                System.out.println("Lv.4");
                break;
            case 5:
                System.out.println("Lv.5");
                break;

            default: // 옵션
                System.out.println("Unknown Level");
        }
    }
}

switch문을 사용해 보았다.
level이 1일 경우 (case 1) "Lv.1" 을 출력 후 break(탈출) 하라고 작성하였고 2,3,4,5 모두 같게 작성하였다.

default를 통해 위에 case가 아닌 경우 Unknown Level이라는 문장을 출력하는 옵션을 넣어두었다.

그렇기 때문에 level이 3일 경우 출력해보면 값은 Lv.3 이 나오게 된다.


Fall-through

switch 문에서 여러 케이스를 묶기 위해 의도적으로 break를 생략하는 기법을 의미한다.

fall through 예제 (1)

다음을 만족하는 switch 문을 작성하라.

입력된 레벨이
1 또는 2이면 "초보자" 출력
3 또는 4이면 "아마추어" 출력
5이면 "고수" 출력

    public static void main(String[] args) {
        
        int level = 3;

        switch (level) {
            case 1:
            case 2:
                System.out.println("초보자");
                break;
            case 3:
            case 4:
                System.out.println("아마추어");
                break;
            case 5:
                System.out.println("고수");
        }
    }
}

switch 문을 활용해 case를 넣어 작성하였다.
앞에 했던 것과 비슷하다.
case1과 2를 묶고 1,2가 같은 값이 나오고 넘어가도록 break를 걸었다.
level이 3일 경우 출력값은 "아마추어"가 나와준다.

fall through 예제 (2)

다음을 만족하는 스위치 문을 작성해라.

입력된 월(Month)이
3,4,5 이면 '봄' 출력
6,7,8 이면 '여름' 출력
9,10,11 이면 '가을' 출력
12,1,2 이면 '겨울' 출력

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

        switch (month) {
            case 3:
            case 4:
            case 5:
                System.out.println("봄");
                break;

            case 6:
            case 7:
            case 8:
                System.out.println("여름");
                break;

            case 9:
            case 10:
            case 11:
                System.out.println("가을");
                break;

            case 12:
            case 1:
            case 2:
                System.out.println("겨울");
                break;
        
            default:
                break;
        }
    }
    
}

이 문제 또한 예제 1번과 동일하다.


반복문(Loop)

반복적이거나 순차적인 작업을 처리할 때 사용된다고 한다.


for 문

for(반복 변수의 초기값, 반복 조건; 변수 증감식) {
반복 실행할 코드
}

for문 예제

hello를 10번 출력하라.

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

        // i의 범위: 1, 2, 3 ...10
        // i의 초기값은 1이고 i가 10보다 작거나 같을 때까지 i를 1씩 증가시킨다
        for (int i = 1; i <= 10; i++) {
            System.out.println("hello");
        }
    }
}

i에 1의 값을 부여하였다.
그리고 그 i가 10보다 작거나 같을 때까지 i++, 하나씩 증가시키는 명령을 했다.
그렇게 hello를 출력하면 hello가 총 10번이 나온다.


반복 변수 활용

for문 안에서 반복 변수에 접근할 수 있다.
이를 통해 산술 연산이나 반복 가능한 객체(Iteable) 처리 등 다양한 작업이 가능하다고 한다.

반복 변수 예제 (1)

10번 반복되는 반복문을 작성하라.
단 현재가 몇 번째 회차인지 출력하라.

public class Main {
    public static void main(String[] args) {
        
        for (int i = 1; i <= 10; i++) {
            System.out.println(i + "회차");
        }
    }
    
}

앞서 했던 for문과 동일하다.
i에 1의 값을 주고 10과 같거나 작을 때까지 i++ 더해라.
그러고 i 와 "회차" 를 같이 출력하라고 작성하였다.

그렇게 된다면 출력값은

1회차
2회차
3회차
.
.
.
10회차

이렇게 출력된다.

반복 변수 예제 (2)

반복 변수를 활용해 1부터 10까지의 숫자 중 짝수만 출력하라.

public class Main {
    public static void main(String[] args) {
        
        for( int i = 1; i <= 10; i++ ) {
            if (i % 2 == 0) {
                System.out.println(i);
            }
        }
    }
    
}

for문을 사용하였다.
i에 i의 값을 부여하고 만약 i를 2로 나눴을 때 0이 된다면 10보다 작거나 같을 때까지의 i의 값을 출력하라는 코드를 작성하였다.

그럼 짝수인 2, 4, 6, 8, 10이 출력되는 것을 확인할 수가 있다.

반복 변수 예제 (3)

반복 변수를 활용해 1부터 10까지의 합을 구하라.

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

        for(int i = 1; i <= 10; i++) {
            sum += i;
        }

        System.out.println(sum);
    }
    
}

먼저 합계를 저장할 변수 sum을 만들고 초기값을 0 부여하였다.
그 다음 for 문을 활용해 i는 1이고 i가 10보다 작거나 같을 때까지 i를 1씩 증가하게 만들었다.
그리고 sum 값에 i값을 계속 더해 누적시키게 만들었다.
그리고 sum을 출력해 최종 합계인 55를 출력시켰다.


break

반복문을 빠져나오는 명령어로 주로 조건문과 함께 쓰인다.

break 예제

10번 반복되는 코드에서 5회차까지 완료하면 반복문을 빠져나와라.

public class Main {
    public static void main(String[] args) {
        
        for (int i = 1; i <= 10; i++){
            if (i == 6) {
                break;
            }

            System.out.println(i + "회차");

        }

    }
    
}

for문을 사용해 10번 반복시키고 if문을 사용해 6번 반복되는 순서일 때 break를 사용해 멈추라고 명령하였다.
그렇게 i와 회차를 더한 것을 출력하면
1회차
2회차
.
.
5회차
이렇게만 출력이 되는 것을 확인할 수가 있다.


continue

특정 반복 회차를 건너뛰는 명령어다.
주로 조건문과 함께 쓰인다.

countinue 예제

10번 반복되는 코드에서 홀수 회차는 건너뛰어라.

public class Main {

    public static void main(String[] args) {

        for (int i = 1; i <= 10; i++) {

            // 홀수 회차는 건너뛴다.
            if (i % 2 == 1) {
                continue;
            }

            System.out.println(i + "회차");
        }

    }

}

for문과 if문을 활용하였다.
for문을 통해 i가 10과 같거나 적어질 때까지 1씩 증가시키지만
만약(if) i를 2로 나누었을 때 값이 1이라면 건너뛰라는(continue) 명령을 내려주었다.
그러고 출력하게 된다면

2회차
4회차
6회차
8회차
10회차

이렇게 출력이 되는 것을 확인할 수가 있다.


for문과 Iteavle

for문은 주로 Iteravle(반복가능한 객체)을 처리하는 용도로 쓰인다고 한다.

배열 순회 예제 (1)

5개의 원소(10, 20, 30, 40, 50)로 구성된 정수형 배열을 생성하고 각각의 원소에 접근해보라.

public class Main {
    public static void main(String[] args) {
        
        int[] arr = {10, 20, 30, 40, 50};

        // 반복 변수를 인덱스로 활용한다
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
            
        }
    }
    
}

int[] arr를 통해 각각의 정수를 배열해주었다.
그런 다음 for문을 통해 배열의 모든 숫자를 순서대로 반복하도록 작성하였다.
i에 0을 부여해 첫번째 인덱스에 접근시켰고, i > arr.length 배열의 길이보다 작은 동안 반복을 시켰으며 i++ 반복이 끝날 때마다 i를 1씩 증가시켰다.
그리고 반복 변수 i를 배열의 인덱스로 사용해 배열 안의 값을 하나씩 출력시킨다.
그럼 10, 20, 30 ... 이런식으로 출력이 되는 것을 확인해 볼 수 있다.

배열 순회 예제 (2)

5개의 원소(10, 20, 30, 40, 50)로 구성된 정수형 배열을 생성하라.
그 다음 for문을 활용해 이 배열의 모든 원소를 10배 크게 만들어라.

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

        int[] num = {10, 20, 30, 40, 50};

        // length 배열의 길이 (요소 개수)
        for (int i = 0; i < num.length; i++) {
            System.out.println (num[i]*10);
            
        }
    }
    
}

간단하다.
배열을 통해 각각의 정수를 배열한 뒤 for문을 활용하는 것은 위와 같다.
그런 다음 출력값에 10을 곱해주면 된다.


2차원 배열 순회하기

중첩 반복문을 활용해 행렬(2차원 배열)을 순회할 수 있다.

2차원 배열 순회 예제

중첩 반복문을 활용해 다음 행렬을 순회하라.

1 2 3
4 5 6

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

        // r은 행 (row), c는 열(column)을 의미
        // r의 범위: 0, 1
        for (int r = 0; r < matrix.length; r++) { //행의 개수
            // c의 범위:
            for (int c = 0; c < matrix[r].length; c++) { // 각 행에서 열의 개수
                System.out.println(matrix[r][c]);
            }
        }
    }   
}

int[][] matrix를 통해 2차원 배열을 생성하였다.
첫번째 반복문은 행(row)를 순회하는 반복문이다.
r = 0 첫번째 행부터 시작하고 전체 행의 개수만큼 반복시켰다
그리고 반복할 때마다 다음 행으로 이동시켰다.
현재 배열에는 행이 2개가 있으므로 matrix.length의 값은 2이다.
즉 r의 값은 0,1 까지 반복된다
두번째 반복문은 열(column)을 순회하는 반복문이다.
c = 0 첫번째 열부터 시작하고 현재 형의 열 개수만큼 반복시켰다.
또한 반복할 때마다 다음 열로 이동시켰다.
현재 각 행에는 3개의 값이 있으므로 matrix[r].length의 값은 3이다.
즉 c의 값은 0, 1, 2까지 반복된다.

그 다음 r을 행 인덱스 c를 열 인덱스로 사용해 배열 안의 값을 하나씩 출력하였다.


foreach 문

lterable을 순회할 때 사용하는 문법이다.
일반 for문보다 더 간결한 방법을 제공한다.

for(자료형 요소: lterable) {반복할 코드}

foreach 예제

John Doe, Jane Doe, Mary Doe 등 세사람으로 구성된 문자열 배열을 생성하라.
그 다음 foreach문을 활용해 각 사람에게 접근하라.

public class Main {
    public static void main(String[] args) {
        
        String[] persons = {"John Doe", "Jane Doe", "Mary Doe"};

        // 단수형 (요소이름) : 복수형 (배열)
        for (String person : persons) {
            System.out.println(person);
        }
    }
    
}

String 배열을 사용해 세 사람의 이름을 저장하는 배열 persons를 생성하였다.
거기서 foreach문을 사용해 배열(persons) 안에 값을 하나씩 꺼내도록 작성하였다.
여기서 persons는 전체 배열이고 person은 배열에서 꺼낸 요소 하나를 의미한다.
즉 persons 배열 안의 값을 하나씩 person에 저장하며 반복한다라는 뜻이다.
반복할 때마다 현재 꺼내진 값을 출력하라는 print 명령을 내려 순서대로 출력이 되게 만들었다.
따라서 출력 결과는

John Doe
Jane Doe
Mary Doe

이렇게 출력된다.


while 문

while문의 사용방법은 이렇다.

while(반복 조건) {
반복 실행할 코드
}

while 문 예제

while 문을 활용해 "hello"를 10번 출력하라.

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

        while (i <= 10 ) {
            System.out.println("hello");
            i++;
        }
    }
    
}

i의 1의 값을 넣어준 뒤 while문을 사용해 i가 10보다 작거나 같을 때까지 반복하게 만들었다.
i++을 사용해 반복이 한 번 끝날 때마다 i값을 1씩 증가시킨다.
따라서 hello가 10번 출력된다.


반복 변수 활용

while 문에서 반복 변수를 활용해 반복적이거나 순차적인 작업을 진행할 수 있다.

반복 변수 예제

10번 반복되는 while 문을 작성하라.
그리고 현재가 몇 번째 회차인지 출력하라.

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

        while (i <= 10) {
            
            System.out.println(i + "회차");
            i++;
            
            // 간소화 버전
            //System.out.println((i++) + "회차");
        }
    }
    
}

위에서 했던 것과 동일하다
출력할 때 i++을 아래에 쓰는 게 아닌 () 안에 적어주면 조금 더 간소화된 코드가 완성된다.


break

break를 활용해 while문을 빠져나갈 수 있다.
주로 조건문과 함께 사용된다.

break 예제

10번 반복되는 코드를 작성하라.
이 때 5번째 회차를 완료하면 while문을 빠져나가라.

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

        while (i <= 10) {
            System.out.println(i + "회차");

            if (i++ == 5) {
                break;
            }
            
            
        }
    }
    
}

동일한 while문을 적어준 뒤 if문을 사용해 i의 값이 증가되는 것이 5번째가 된다면 break를 통해 빠져나올 수 있는 코드를 작성하였다.

그럼 10회차까지 출력이 되는게 아니라 5회차에서 출력이 멈추게 된다.


coutinue

while문에서 특정 회차를 건너뛸 수 있다.
조건문과 함께 사용된다.


함수

함수는 주어진 작업을 처리하고 결과를 반환하는 프로그램의 기능 단위이다.
다음은 함수를 정의하는 방법이다.

반환_자료형 함수 이름(매개변수1, 매개변수2, ...) {
처리할 작업
}
-반환값이 없다면 반환 자료형은 void 이다.


함수 정의하기

hello를 출력하는 함수를 정의하고 여러번 호출해보자.

public class Main {

    // void: 함수가 반환을 하지 않음
    static void greeting() {
        System.out.println("hello");
    }

    public static void main(String[] args) {
        // 제한없이 호출 가능 - 코드의 재사용성 증가
        greeting();
        greeting();
        greeting();

    }
}

static void를 사용해 greering안에 hello를 출력하는 코드를 작성하였다.
그 다음 main에서 greeting();을 반복 사용해 여러 번 호출 시켰다.


매개변수와 인자

다음과 같은 의사 코드가 있을 때

함수 정의: add(x,y){return x + y}
함수 호출: add(1,2)

매개변수 (parameters) - 함수에서 인자를 표현하는 변수
ex) x, y
인자 (Arguments) - 함수에 실제 입력되는 값
ex) 1, 2

매개변수와 인자 예제 (1)

두 정수를 입력받아 합을 출력하는 함수를 정의하라.

public class Main {

    static void add(int a, int b) { // 매개변수: a, b
        System.out.printf("%d + %d = %d\n", a, b, a + b);
    }
    
    public static void main(String[] args) {
        add(1, 2); // 인자: 1, 2
        add(3, 4); // 인자: 3, 4
        add(5, 6); // 인자: 5, 6
    }
}

먼저 add라는 함수를 만들었다.
이 함수는 정수 2개를 전달받고 두 숫자를 더한 결과를 출력한다.
그 다음 int a와 int b는 함수가 값을 전달받기 위한 변수이다.
즉 첫번째 숫자는 a 두번째 숫자는 b에 저장이 된다.
그 다음 출력부분에는 a 값, b 값, a+b의 결과를 출력한다.
다음은 main에서 함수를 호출한다.
add(1, 2);... 를 통해 add 함수를 여러번 호출한 것이다.
호출할 때마다 전달한 숫자가 바뀌고 결과도 달라진다.

매개변수와 인자 예제 (2)

나이를 입력받고 성인인지 아닌지 알려주는 함수를 정의하라.

public class Main {

    static void isAdult(int age){  
        if (age >= 18) {
            System.out.println("성인입니다");
        } else {
            System.out.println("성인이 아닙니다");
        }
    }  
    
    public static void main(String[] args) {
        isAdult(10);
        isAdult(20);
        isAdult(30);
    }
}

static void isAdult라는 함수를 만들고 int age라는 매개변수를 만들었다.
그 후 만약(if) age(나이)가 18보다 크거나 같으면 성인입니다,
그렇지 않다면(else) 성인이 아닙니다를 출력하게 만들었고

main에서 isAdult(나이값); 을 통해 함수를 여러번 호출하였다.
함수를 호출할 때 전달한 숫자는 인자이며 이 값들이 age 매개변수에 전달된다.

따라서 10은 성인이 아닙니다
20은 성인입니다
30은 성인입니다 가 출력된다.


반환하기(return)

함수는 연산의 결과를 반환(return)할 수 있습니다.
반환을 하면 함수의 실행은 종료되므로 return 아래에 코드가 있다면 실행되지 않는다.

반환하기 예제 (1)

두 정수를 입력받아 합을 반환하는 함수를 정의하라.

public class Main {

    static int add(int a, int b) {
        // return + 반환할 값
        return a + b;
    }

    public static void main(String[] args) {
        
        // add의 반환값을 result 변수에 저장합니다
        int result = add(1,2);

        System.out.println(result);

        //3

        // int newResult = result + 1;
        // System.out.println(newResult);
        // 출력값: 4
    }
    
}

먼저 add라는 함수를 정의하였다.
이 함수는 두 개의 정수를 전달받고 두 숫자를 더한 결과를 반환하는 함수이다.

여기서 int는 함수가 int(정수) 값을 반환한다라는 뜻이다.
void가 들어가게 되면 반환값은 존재하지 않고 이번엔 return을 사용해 결과값을 돌려주게 된다.

int a와 int b는 함수가 전달받는 값이다.

예를들어 add(1, 2);를 호출하면 a는 1, b는 2가 된다.

return은 a + b의 계산결과를 함수를 호출한 곳으로 다시 돌려주는 역할을 한다.

그 다음 main에서 함수를 호출시킨다.
add(1,2)를 실행하고 함수 안에서 1+2를 계산한다
그 다음 결과값 3을 반환하고 반환된 값을 result 변수에 저장시킨다.
그렇게 된다면 최종적으로 result는 3이 된다.

그렇기 때문에 result를 println로 출력하면 3이 나온다.


오버로딩(Overloading) 기법

오버로딩을 통해 하나의 함수가 자료형에 따라 다르게 동작할 수 있도록 만들 수 있다.
다형성을 구현하는 방법 중 하나이다.

오버로딩 예제

정수형과 실수형 모두를 대상으로 덧셈을 수행할 수 있는 함수를 정의해라.

public class Main {

    static void add(int a, int b) {
        System.out.println(a + b);
    }

    static void add(double a, double b) {
        System.out.println(a + b);
    }

    public static void main(String[] args) {
        // 호출 시점의 장점 - 다형성
        add(1, 2);
        add(1.5, 2.5);
    }
    
}

이 코드는 같은 이름의 함수(add)를 사용하지만 전달하는 자료형에 따라 다른 함수가 실행이 된다.

static void add(int a, int b)를 통해 int(정수) 2개를 전달받는다.
static void add(double a, double b)는 double(실수) 2개를 전달받는다.

함수의 이름은 둘 다 add로 오류가 나지 않는 이유는 (int, int) (double, double)처럼 매개변수 타입이 서로 다르기 때문이다.

java는 함수 호출 시 전달한 값의 타입을 보고 어떤 함수를 실행할지 자동으로 선택한다고 한다.

그래서 최종 출력 결과는 3 4.0이 나온다.


마무리

오늘은 함수와 반환값, 그리고 메서드 오버로딩까지 배우며 프로그래밍의 구조를 조금 더 깊게 이해할 수 있었다.
이전에는 단순히 코드를 한 줄씩 실행하는 느낌이었다면, 이제는 필요한 기능을 함수로 만들어 여러 번 재사용할 수 있다라는 점이 인상적이었다.

특히 return을 사용해 결과값을 돌려주는 방식이 흥미로웠는데, 단순히 출력만 하는 것이 아니라 계산 결과를 다른 변수에 저장해서 다시 사용할 수 있다라는 점에서 프로그램이 훨씬 유연해진다라는 것을 느꼈다.

또한 매개변수와 인자를 배우면서 함수가 외부에서 값을 전달받아 동작한다는 개념도 이해하게 되었다.
처음에는 둘의 차이가 헷갈렸지만, 직접 코드를 작성해보며 매개변수는 값을 받아 젖아하는 변수이고 인자는 실제로 전달하는 값이라는 것을 익힐 수 있었다.

아직은 함수와 반환값의 흐름을 한 번에 이해하는 것이 어렵기도 하지만, 코드를 직접 실행하며 결과를 확인하다보니 점점 익숙해지고 있다.

오늘 배운 내용은 앞으로 더 복잡한 프로그램을 만들 때 매우 중요한 기초가 될 것 같고, 점점 코드가 단순한 문장이 아니라 하나의 구조로 보이기 시작했다.

내일은 어떤 것을 배울지 참 기대가 된다!

0개의 댓글