본문 바로가기
자격증/정보처리기사 실기

정보처리기사[실기] 기출문제_자바(2022년도)

by 김엉배 2023. 9. 17.
728x90
반응형

◎  2022년 1회 03번

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 =n new A();
        m.a = 100;
        func1(m);
        m.b = m.a;
        func2(m);
        
        System.out.printf("%d", m.a);
    }
}
더보기

* 참고

1) func1(m) 호출 -> m.a 가 100이므로 m.a *= 10; 은 1000이 된다.

2 func2(m) 호출 -> m.a 가 100이므로 m.a += m.b; 는 2000이 된다.

 

♣ 정답  ->  2000

 

◎  2022년 1회 11번

스레드에 관한 코드

class Car implements Runnable {
    int a;
    pulic void run() {
    	//...
    }
}

public class Test {
	public static void main(String args[]) {
    	Tread t1 = new Thread(new _______());
        t1.start();
    }
}
더보기

* 참고(스레드란? : 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미)

 

1) 스레드를 만들기 위해서는 Runnable 인터페이스를 상속받는다.

2) 스레드를 생성하기 위해서 new 뒤에 Runnable 인터페이스를 상속받은 스레드 클래스로 선언해 준다.

 

♣ 정답  ->  Car

 

◎  2022년 2회 07번

public class Test {
	public static void main(String[] args) {
    	int i = 3;
        int k = 1;
        
        switch(i) {
            case 1 : k += 1;
            case 2 : k += 1;
            case 3 : k += 1;
            case 4 : k += 1;
            case 5 : k += 1;
            default : k--;
        }
        System.out.printf("%d", k);
    }
}
더보기

* switch case 문에서 break가 없으면 다음 case 문 실행

 

1) i가 3이므로 case 3 실행

2) case 3 : k=0

3) case 4 : k=3

4) case 5 : k= 3-10 = -7

5) default : -8

 

♣ 정답  ->  -8

 

◎  2022년 2회 17번

public class Test {
    int a;
    public Test(int a) {
    	this.a = a;
    }
    int func() {
    	int b = 1;
        for(int i=1; i<a; i++) {
        	b = a * i + b;
        }
        return a + b;
    }
    public static void main(String[] arggs) {
    	Test obj = new Test(3);
        obj.a = 5;
        int b = obj.func();
        System.out.print(obj.a + b);
    }
}
더보기

* Test class에서 int a를 3이 되었지만, main에서 obj.a = 5

 

1) int b = obj.func() 실행 / a = 5, b =1

2) for문 실행 

3) b=5*1+1 = 6

    b=5*2+6 = 16

    b=5*3+16 = 31

    b=5*4+31 = 51

4) for문이 끝나고 return a+b = 5+51 = 56

5) obj.a + b 출력 5+56 = 61

 

♣ 정답  ->  -61

 

◎  2022년 3회 04번

class Test {
	public static void main(String[] args) {
    	int[] result = new int[5];
        int[] arr = {79, 34, 10, 99, 50};
        for(int i=0; i<5; i++) {
        	result[i] = 1;
            for(int j=0; j<5; j++) {
            	if(arr[i] < arr[j]) result[i]++;
            }
        }
        for(int k=0; k<5; k++) {
        	System.out.ptint(result[k]);
        }
    }
}
더보기

* for문이 많을 시 규칙 찾고, 헷갈리지 않게 표 만들고 차근차근 계산

 

1) result [i]의 초기값은 1

2) arr배열에서 자기 자신보다 큰 수이면 result [i] 값을 1씩 증가

 

  i = 0 i = 1 i = 2 i = 3 i =4
j = 0 1 2 2 1 2
j = 1 1 2 3 1 2
j = 2 1 2 3 1 2
j = 3 2 3 4 1 3
j = 4 2 4 5 1 3

 

♣ 정답  ->  24513

 

◎  2022년 3회 19번

public class Test {
	static int[] MakeArray() {
    	int[] tempArr = new int[4];
        for(int i=0; i<tempArr.length; i++) {
        	tempArr[i] = i;
        }
        return tempArr;
    }
    
    public static void main(String[] args) {
    	int[] intArr;
        intArr = MakeArray();
        
        for(int i=0; i<intArr.length; i++) {
        	System.out.print(intArr[i]);
        }
    }
}
더보기

1) main 함수에서 intArr 배열을 선언하고 MakeArray 함수를 통해 결과를 intArr에 저장

2) MakeArry 함수에서 크기 4인 tempArr 배열 선언하고, for문을 통해 배열의 크기에 따라 반복하며 1씩 증가하는 i값을 넣고 반환

 

♣ 정답  ->  0123

 

◎  2022년 3회 20번

public class Test {
	public static void main(String[] args) {
    	int a = 0;
        for(int i=1; i<999; i++) {
        	if(i%3==0 && i%2 != 0)
            	a = i;
        }
        System.out.print(a);
   }
}
더보기

1) a를 0으로 초기화

2) for 문에 i를 1~998까지 반복

3) if문에서 3으로 나누어 떨어지고, 2로 나누어 떨어지지 않는 결과만 a에 대입 (즉, 3의 배수 중 짝수는 제외)

 

♣ 정답  ->  993

728x90
반응형