정보처리기사 2020년도 Java 기출문제(2)
업데이트:
2020년 3회
abstract class Vehicle{
private String name;
abstract public String getName(String val);
public String getName(){
return "Vehicle name:" + name; // 6) 5)로부터 전달받은대로, 해당 문자열과 4)에서 저장한 name 변수의 값(Spark)를 반환받는다
}
public void setName(String val){
name = val; // 4) 2)로부터 3)을 통해 전달받은 변수 Spark를 name이라는 변수에 저장한다
}
}
class Car extends Vehicle{
public Car(String val){
setName(val); // 3) Car 메소드는 추상 클래스 Vehicle의 setName 메소드를 사용한다
}
public String getName(byte val[]){
return "Car name:" + val;
}
}
public class main{ // 1) main 함수에서부터 시작
public static void main(String[] args){
Vehicle obj = new Car("Spark"); // 2) Spark라는 매개변수를 가진 Car라는 생성자를 생성한다(이 때 obj는 추상 클래스 Vehicle의 변수이다)
System.out.print(obj.getName()); // 5) 한편, getName 매소드의 매개변수가 비어있으므로, 클래스 Car가 아닌 클래스 Vehicle의 매소드를 사용해야 한다 -> 7) 6) 으로부터 반환받은 Vehicle name:Spark를 출력한다
}
}
Vehicle name:Spark
public Car(String val){
이 부분에서 오류가 나는데… 그 원인은 좀 더 연구해보고 추가하는 것으로 한다.
2020년 4회
class Exam{
public static void main (String[] args){
int []a = new int[8]; // 8개의 자리가 있는 새 배열을 생성
int i = 0; // i의 초기값 0
int n = 10; // n의 초기값 10(2진수로 변환할 10진수 숫자를 여기에 대입)
while(i<8){ // i를 0부터 7까지 반복한다(a[0]~a[7]까지 숫자를 채우기 위함)
a[i++] = n%2; // 숫자 10의 나머지를 구한다(그 나머지가 이진수가 되므로)
n /= 2; // 숫자를 2로 나누어준다
}
for(i=7; i>=0; i--){ // 위의 for문에서 구한 배열 a의 역순이 2진수가 되므로, 뒤에서부터 거꾸로 for문을 돌려준다
System.out.print(a[i]); // 거꾸로 for문을 돌리며 배열의 숫자를 출력한다
}
}
}
00001010
2020년 4회
public class Exam{
public static void main(String[] args){
int[][] a = new int[3][5]; // 3행 5열의 새로운 배열 a를 선언
for(int i=0; i<3; i++){ // i(행수)를 0부터 2까지 증가시키며 for문 실행
for(int j=0; j<5; j++){ // j(열수)를 0부터 4까지 증가시키며 for문 실행
a[i][j] = j*3 + (i+1); // 이중 for문 안에서 행(i)은 1씩 증가, 열(j)는 3씩 증가하는 규칙을 지정해줌
System.out.print(a[i][j] + " "); // 결과를 출력
}
System.out.println(); // 결과를 한 행씩 출력
}
}
}
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
2020년 2회
class Parent{
public int compute(int num){
if(num <= 1) return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends Parent{
public int compute(int num){
if(num <= 1) return num; // 3) 4<=1 이 아니므로,
return compute(num-1) + compute(num-3); // 4) compute(3)+compute(1)을 출력해야 하는데,(여기서 compute(1)은 1)
// compute(3)은 3<=1 이 아니므로, compute(2)+compute(0)을 출력해야 함(여기서 compute(0)=0)
// compute(2)는 2<=1 이 아니므로, compute(1)+compute(-1)을 출력해야 함(여기서 compute(1)=1, compute(-1)=-1)
}
}
class Exam{
public static void main(String[] args){
Parent obj = new Child(); // 1) obj는 Child 인스턴스를 가진다.
System.out.print(obj.compute(4)); // 2) obj.compute(4)는 Child 클래스의 compute 메서드를 실행시키라는 의미
// 5) 4)에서 모인 값을 계산하면, compute(4) = compute(3)+compute(1) = 0+1 = 1 즉, 1이 출력되어야 함.
}
}
1