TIL

[TIL/정처기] 2025/03/31

22년 1회 기출 코드 정리 ✍️22-1-1-JAVA ⚙️객체의 경우 Call by Reference, 주소가 복사된다. 메소드 내부에서 값을 변경하면 원본 객체도 변경된다. 최종 출력 결과는 2000.22-1-5-JAVA ⚙️멀티스레딩을 구현한 코드다. Runnabl

2025년 3월 31일5min read

22년 1회 기출 코드 정리 ✍️

22-1-1-JAVA ⚙️

code
class A {
    int a;
    int b;
}

public class Test {
    static void func1(A m){
        m.a *= 10;
    }

    static void func2(A m){
        m.a += m.b;
    }

    public static void main(String[] args) {
        A m = new A();
        m.a = 100;
        func1(m);
        m.b = m.a;
        func2(m);
        System.out.printf("%d", m.a);
    }
}

객체의 경우 Call by Reference, 주소가 복사된다. 메소드 내부에서 값을 변경하면 원본 객체도 변경된다. 최종 출력 결과는 2000.

22-1-5-JAVA ⚙️

code
class Car implements Runnable {
    int a;
    public void run(){
        try {
            while(++a < 100){
                System.out.println("miles traveled : " +a);
                Thread.sleep(100);
            }
        } catch (Exception e) { }
    }
}

public class Test {
    public static void main(String[] args) {
        Thread t1 = new Thread(new Car());
        t1.start();
    }
}

멀티스레딩을 구현한 코드다. Runnable 인터페이스는 run()이라는 메소드를 가지고 있다. 해당 메서드를 Car()에서 구체적으로 구현한 것이다.

Thread t1 = new Thread(new Car());``` 이 부분이 핵심이다. new Thread()를 통해 스레드를 생성한다. 스레드란 하나의 작업 단위로 볼 수 있는데, Car 객체에서 생성한 run() 메소드를 실행하도록 되어 있다.

최종 출력 결과는 다음과 같다.

miles traveled : 1
miles traveled : 2
miles traveled : 3
miles traveled : 4
miles traveled : 5
...
miles traveled : 99


**22-1-7-Python ⚙️**

def func(num1, num2 = 2): print('a =', num1, 'b=', num2)

func(20)

code

인수는 매개변수에 차례로 전달된다. 따라서 인수가 하나만 주어지면, num1이 해당 인수를 전달받는다. 최종 출력 결과는 a = 20 b = 2.

**22-1-12-C ⚙️**

5를 입력했을 때라고 가정한 코드.

#include

int func(int a) { if(a <= 1) return 1; return a func(a - 1); }

int main() { int a; scanf("%d", &a); printf("%d", func(a)); }

code
scanf()는 입력을 받는 함수다. &a는 변수 a의 메모리 주소를 의미한다. scanf()는 직접 변수의 값을 변경해야 하므로, 변수 자체가 아닌 변수의 메모리 주소를 필요로 한다. 이후에는 5 팩토리얼을 계산하게 된다. 최종 출력 결과는 120.

**22-1-15-C ⚙️**

정수를 역순으로 출력하는 프로그램. 단, 1230처럼 0으로 끝나는 정수는 고려하지 않는다.

#include

int main() { int number = 1234; int div = 10, result = 0;

while (number != 0) { result = result div; result = result + number % div; number = number / div; } printf("%d", result); }

code
별로 래핑된 부분, ```!=, %, /```를 채우는 코드였다.

`number`를 10으로 나누어 각 자릿수를 추출한 뒤, `result` 변수에 순차적으로 더하여 숫자를 뒤집는다. 예를 들어, `1234`는 첫 번째 반복에서 `4`가 더해지고, 두 번째 반복에서 `3`, 세 번째에서 `2`, 네 번째에서 `1`이 더해져 최종적으로 `4321`을 출력하게 된다.



**22-1-17-C ⚙️**

#include

int isPrime(int number) { for(int i = 2; i < number; i++) if(number % i == 0) return 0; return 1; }

int main() { int number = 13195; int max_div = 0; for(int i = 2; i < number; i++) if(isPrime(i) == 1 && number % i == 0) max_div = i; printf("%d", max_div); }