1회-1) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Test001 {
public static void main(String[] args) {
int aa[][] = {{45, 50, 75},
{89}};
System.out.println(aa[0].length);
System.out.println(aa[1].length);
System.out.println(aa[0][0]);
System.out.println(aa[0][1]);
System.out.println(aa[1][0]);
}
}
답:
3
1
45
50
89
1회-2) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Test002 {
public static void main(String[] args) {
int j, i;
for(j=0, i=0; i<=5; i++) {
j += i;
System.out.println(i);
if (i == 5) {
System.out.println("=");
System.out.println(j);
} else {
System.out.println("+");
}
}
}
}
2회-1) 다음 Java로 구현된 프로그램을 분석하여 괄호에 들어갈 알맞은 예약어를 쓰시오.
public class Test003 {
public static void main(String[] args) {
System.out.print(Test003.check(1));
}
( ) String check(int num) {
return (num >= 0) ? "positive":"negative";
}
}
답: static
2회-2) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Ovr1 {
public static void main(String[] args) {
Ovr1 a1 = new Ovr1();
Ovr2 a2 = new Ovr2();
System.out.println(a1.sun(3,2) + a2.sun(3, 2));
}
int sun(int x, int y) {
return x + y;
}
}
class Ovr2 extends Ovr1 {
int sun(int x, int y) {
return x - y + super.sun(x, y);
}
}
답: 11
3회-1) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
class Connection {
private static Connection _inst = null;
private int count = 0;
public static Connection get() {
if(_inst == null) {
_inst = new Connection();
return _inst;
}
return _inst;
}
public void count() { count++; }
public int getCount() { return count; }
}
public class Test005 {
public static void main(String[] args) {
Connection conn1 = Connection.get();
conn1.count();
Connection conn2 = Connection.get();
conn2.count();
Connection conn3 = Connection.get();
conn3.count();
System.out.println(conn1.getCount());
}
}
답: 3
처음에 _inst가 null이므로 Connection.get()을 하면 _inst = new Connection();이 되고 _inst가 retrun 된다.
그 이후부터는 Connection.get()을 하면 _inst가 null이 아니므로 _inst를 반환한다.
따라서 count() 메소드를 쓸 때마다 count의 값이 1씩 올라가게 된다.
결국 답은 3이 된다.
3회-2) 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오. (단, 출력문의 출력 서식을 준수하시오.)
public class Test006 {
public static void main(String[] args) {
int w = 3, x = 4, y = 3, z = 5;
if ((w==2 | w==y) & !(y>z) & (1==x^y!=z)) {
w = x + y;
if (7 == x ^ y != w) {
System.out.println(w);
} else {
System.out.println(x);
}
}
else {
w = y + z;
if(7 == y ^ z != w) {
System.out.println(w);
} else {
System.out.println(z);
}
}
}
}
답: 7
악독한 문제라고 볼 수 있다. 연산자의 순서를 알아야만 풀 수 있는 문제이다.
우선 생소한 ^는 XOR로, 배타적 OR라고 한다.
^ 앞뒤에 오는 값이 같으면 false(0), 다르면 true(1)라고 생각하면 된다.
연산 순서는
증감 - 산술 - 시프트 - 비교 - 비트 - 논리 - 조건(삼항) - 대입 순이라고 생각하면 된다.
^는 비트 연산자 이므로 비교 연산자인 ==, !=보다 늦게 계산된다.
따라서 위와 같은 풀이가 나올 수 있다.
'Language > Java' 카테고리의 다른 글
[정보처리기사] 2023년 Java 프로그래밍 언어 문제 (0) | 2024.04.08 |
---|---|
[정보처리기사] 2022년 Java 프로그래밍 언어 문제 (0) | 2024.04.07 |
[정보처리기사] 2020년 Java 프로그래밍 언어 문제 (1) | 2024.04.07 |
[정보처리기사] 2019년 Java 프로그래밍 언어 문제 (2) | 2024.04.04 |
[정보처리기사] 2018년 Java 프로그래밍 언어 문제 (0) | 2024.04.04 |