1️⃣ [JAVA]
2022.2회
문제
public class Conv {
public Conv(int a) {
this.a = a;
}
int func() {
int b = 1;
for (int i = 1; i < a; i++) {
b = a * i + b;
}
return a + b;
}
int a;
}
public static void main(String[] args){
Conv obj = new Conv(3);
obj.a = 5;
int b = obj.func();
System.out.print(obj.a + b);
}
61
Conv라는 클래스에 aoroqustn 'a'를 멤버 변수 'a'에 할당한다.
func() 메서드로 b를 1로 초기화하고 a가 1보다 큰경우 'for' 루프가 실행된다.
루프에서 b의 값은 반복적으로 갱신되며 루프가 끝난 후, 최종적으로 a+b를 반환한다.
main에서 Conv객체 obj가 'a=3' 으로 초기화된다.
하지만 다음번에 다시 5로 변경된다.
아래는 그 값대로 계산한 결과이다.
i | b |
1 | 6 |
2 | 16 |
3 | 31 |
4 | 51 |
b의 값은 51이고 a의 값은 5이다.
return 값이 a + b인데 이 값의 결과가 func이기 때문에 b에는 56이 출력된다.
최종 결과값은 obj.a + b이기 때문에 5 + 56 = 61이다.
2️⃣ [JAVA]
2023.3회
다음 Java 코드에 대한 알맞는 출력값을 작성하시오.
class Parent {
int compute(int num) {
if(num <= 1)
return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends Parent {
int compute(int num) {
if(num <= 1)
return num;
return compute(num-1) + compute(num-3);
}
}
public class main {
public static void main(String args[]) {
Parent obj = new Child();
System.out.print(obj.compute(7));
}
}
2
우선 실행되는 코드에 대해 확인해보면 Parent obj에 Child 인스턴스를 생성했다.
그리고 출력하는 값은 obj.compute 의 7 값이기 때문에 Child class를 읽어본다.
우선 num 값에 7을 넣었을 때 7은 1보다 크기 때문에 compute(6) + compute(4)를 계산해야 한다.
여기서 아래로 6과 4를 각각 계산해나가면 된다.
compute(6) | compute(5) + compute(3) |
compute(5) | compute(4) + compute(2) |
compute(4) | compute(3) + compute(1) |
compute(3) | compute(2) + compute(0) |
compute(2) | compute(1) + compute(-1) |
compute(1) | 1 |
compute(6) + compute(4) =
= (compute(5) + compute(3)) + (compute(3) + compute(1))
= (compute(4) + compute(2) + compute(2) + compute(0)) + (compute(2) + compute(0) + 1)
= ((compute(3) + compute(1)) + (compute(1) + compute(-1) + (compute(1) + compute(-1) + 0) + ( (compute(1) + compute(-1) + 0 + 1)
= (compute(2) + compute(0) + 1 + 1 -1 + 1 -1 + 0 1 -1 + 0 + 1
= compute(1) + compute(-1) + 2
= 2
3️⃣ [JAVA]
2021.1회
다음은 Java 프로그램이다. 실행 결과를 쓰시오.
public class good {
public static void main(String[] args){
int i, j;
for(j=0, i=0; i<=5; i++){
j+=i;
System.out.print(i);
if(i==5){
System.out.print("=");
System.out.print(j);
}else{
System.out.print("+");
}
}
}
}
0 + 1 + 2 + 3 + 4 + 5 = 15
i 와 j 를 생성한다.
반복문의 의미는 j와 i가 0인 상태로 시작하되 매반복문이 실현될때마다 i는 1씩 추가된다.
i가 5를 초과하면 반복문이 끝난다.
j의 값은 i의 값만큼 더하진다.
i | j | print값 |
0 | 0 | 0 + |
1 | 1 | 0 + 1 + |
2 | 3 | 0 + 1 + 2 + |
3 | 6 | 0 + 1 + 2 + 3 + |
4 | 10 | 0 + 1 + 2 + 3 + 4 + |
5 | 15 | 0 + 1 + 2 + 3 + 4 + 5 = 15 |
'📍Certificate > Engineer Information Processing' 카테고리의 다른 글
[정보처리기사] 실기 프로그래밍언어 3문제 (8) (1) | 2024.08.19 |
---|---|
[정보처리기사] 실기 프로그래밍언어 3문제 (7) (0) | 2024.08.15 |
[정보처리기사] 실기 프로그래밍언어 3문제 (5) (1) | 2024.08.13 |
[정보처리기사] 실기 프로그래밍언어 3문제 (4) (3) | 2024.08.06 |
[정보처리기사] 실기 프로그래밍언어 3문제 (3) (3) | 2024.08.02 |