정보처리기사 · 실기

2020~2025년 프로그래밍 언어 실기 기출 유형

답안을 직접 작성하고 정답과 비교해 보세요. 서술형 답안은 표현이 다를 수 있어 직접 확인합니다.

← 과목 목록

126문항미확인 126문항

2025년 1회 주제 · 연습 5

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int result=6;
        try {
            int divisor=1;
            result+=12/divisor;
            System.out.print("T");
        } catch(ArithmeticException e) {
            result+=3; System.out.print("E");
        } finally {
            result+=2; System.out.print("F");
        }
        System.out.print(result);
    }
}
정답·해설 보기

정답

TF20

해설

정수 0 나눗셈은 ArithmeticException을 발생시키며 덧셈 대입은 완료되지 않는다. 예외 여부와 관계없이 finally를 실행한 뒤 최종 result를 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 1회 주제 · 연습 10

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int a[] = {11, 6, 9, 7};
    for (int i=0; i<3; i++)
        for (int j=0; j<3-i; j++)
            if (a[j] > a[j+1]) {
                int t=a[j]; a[j]=a[j+1]; a[j+1]=t;
            }
    printf("%d %d %d %d", a[0], a[1], a[2], a[3]);
    return 0;
}
정답·해설 보기

정답

6 7 9 11

해설

인접한 두 값의 순서가 뒤집혀 있으면 교환하는 버블 정렬이다. 각 바깥 반복 후 큰 값이 오른쪽 끝에 확정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 1회 주제 · 연습 11

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    unsigned int x=11u,y=7u;
    unsigned int z=(x & 7u) ^ (y << 1);
    printf("%u %u", z, x >> 2);
    return 0;
}
정답·해설 보기

정답

13 2

해설

x & 7은 하위 3비트를 남긴다. y를 왼쪽으로 한 비트 옮긴 값과 XOR하고, 두 번째 출력은 unsigned x를 오른쪽으로 두 비트 옮긴 값이다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 1회 주제 · 연습 13

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base {
        int value=7;
        Base(){System.out.print(read()+" ");}
        int read(){return value;}
    }
    static class Child extends Base {
        int value=7;
        int read(){return value+1;}
    }
    public static void main(String[] args) {
        Child child=new Child();
        System.out.print(child.read());
    }
}
정답·해설 보기

정답

1 8

해설

부모 생성자 실행 시에도 read 호출은 Child의 재정의 메서드로 연결된다. 그때 Child.value의 명시적 초기화는 아직 실행되지 않아 기본값 0이다. 생성 완료 후에는 설정된 값에 1을 더한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 1회 주제 · 연습 16

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static int max(int[] a,int l,int r){
        if(l==r)return a[l];
        int m=(l+r)/2;
        return Math.max(max(a,l,m),max(a,m+1,r));
    }
    public static void main(String[] args) {
        int[] a={3,12,5,7};
        System.out.print(max(a,0,a.length-1));
    }
}
정답·해설 보기

정답

12

해설

범위를 둘로 나누어 각 구간의 최대값을 재귀적으로 구한 뒤 둘 중 큰 값을 반환한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 1회 주제 · 연습 17

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

f = lambda x, y=7: x*y+1
print(f(5), f(5, 2))
정답·해설 보기

정답

36 11

해설

첫 호출은 기본 인자 y를 사용한다. 두 번째 호출은 y에 2를 명시적으로 전달한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 1회 주제 · 연습 18

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Node { int value; struct Node *next; };

int main(void) {
    struct Node c={9,NULL}, b={8,&c}, a={7,&b};
    struct Node *head=&a;
    a.next=c.next; c.next=&a; b.next=&c; head=&b;
    for (struct Node *p=head; p!=NULL; p=p->next)
        printf("%d", p->value);
    return 0;
}
정답·해설 보기

정답

897

해설

a의 다음은 NULL, c의 다음은 a, b의 다음은 c가 된다. head에서 b → c → a 순서로 따라가며 구분자 없이 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 1회 주제 · 연습 19

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Point { int x, y; };
struct Box { struct Point pos; int width; };

int main(void) {
    struct Box b={{4, 7}, 6};
    struct Box *p=&b;
    p->pos.x += p->width;
    printf("%d %d", b.pos.x, p->pos.y);
    return 0;
}
정답·해설 보기

정답

10 7

해설

바깥 구조체는 포인터로 접근하고 안쪽 pos는 구조체 값이므로 p->pos.x로 접근한다. 같은 b의 내부 필드가 수정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 1회 주제 · 연습 20

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static int f(int n) { return n<=1 ? n : f(n-1)+f(n-2); }
    public static void main(String[] args) {
        System.out.print(f(7));
    }
}
정답·해설 보기

정답

13

해설

f(0)=0, f(1)=1을 기저 조건으로, f(n)은 직전 두 값의 합이다. 같은 부분 문제가 여러 번 계산되는 재귀이다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 2회 주제 · 연습 5

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+2);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(4);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

12

해설

Child 생성자가 super에 4+2을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 2회 주제 · 연습 9

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int[] values={7,9,11,13};
        int total=0;
        for (int i=0;i<values.length;i++)
            if (i%2==0) total+=values[i];
        System.out.print(total);
    }
}
정답·해설 보기

정답

18

해설

조건은 값의 홀짝이 아니라 인덱스의 홀짝이다. 인덱스 0과 2의 원소만 누적한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 2회 주제 · 연습 10

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static String pick(Object x){return "O";}
    static String pick(Number x){return "N";}
    static String pick(Integer x){return "I";}
    public static void main(String[] args) {
        Integer x=4;
        Number y=x;
        Object z=x;
        System.out.print(pick(x)+pick(y)+pick(z));
    }
}
정답·해설 보기

정답

INO

해설

오버로딩은 호출 지점 인자의 컴파일 시점 타입으로 선택된다. 세 참조가 같은 Integer 객체를 가리켜도 선언형에 따라 I, N, O가 선택된다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 2회 주제 · 연습 12

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int data[] = {3, 7, 10, 12};
    int *p=data+1;
    p[1] += 2;
    printf("%d %d %d", *p, *(p+1), data[3]-data[0]);
    return 0;
}
정답·해설 보기

정답

7 12 9

해설

p는 data[1]을 가리킨다. p[1]과 *(p+1)은 모두 data[2]이므로 같은 원소가 수정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 2회 주제 · 연습 14

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int x=7;
    int a=x++;
    int b=++x;
    printf("%d %d %d", a,b,x);
    return 0;
}
정답·해설 보기

정답

7 9 9

해설

후위 증가는 증가 전 값을 a에 저장하고 x를 증가시킨다. 다음 문장의 전위 증가는 x를 먼저 증가시킨 뒤 b에 저장한다. 각 증가는 별도 문장에서 수행된다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 2회 주제 · 연습 15

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int result=4;
        try {
            int divisor=0;
            result+=12/divisor;
            System.out.print("T");
        } catch(ArithmeticException e) {
            result+=3; System.out.print("E");
        } finally {
            result+=2; System.out.print("F");
        }
        System.out.print(result);
    }
}
정답·해설 보기

정답

EF9

해설

정수 0 나눗셈은 ArithmeticException을 발생시키며 덧셈 대입은 완료되지 않는다. 예외 여부와 관계없이 finally를 실행한 뒤 최종 result를 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 2회 주제 · 연습 16

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Node { int value; struct Node *next; };

int main(void) {
    struct Node c={8,NULL}, b={7,&c}, a={6,&b};
    struct Node *head=&a;
    a.next=c.next; c.next=&a; b.next=&c; head=&b;
    for (struct Node *p=head; p!=NULL; p=p->next)
        printf("%d", p->value);
    return 0;
}
정답·해설 보기

정답

786

해설

a의 다음은 NULL, c의 다음은 a, b의 다음은 c가 된다. head에서 b → c → a 순서로 따라가며 구분자 없이 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 2회 주제 · 연습 17

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

s = "abracadabra"
print(s.count("ab"), sum(ch == "a" for ch in s))
정답·해설 보기

정답

2 5

해설

str.count는 겹치지 않는 부분 문자열의 개수를 센다. 불리언을 합산한 두 번째 식은 각 문자 중 a와 같은 문자의 개수이다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 2회 주제 · 연습 18

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    char s[]="STREAM";
    for (int l=0,r=5; l<r; l++,r--) {
        char t=s[l]; s[l]=s[r]; s[r]=t;
    }
    for (int i=0; i<6; i+=2) printf("%c", s[i]);
    return 0;
}
정답·해설 보기

정답

MET

해설

양 끝 문자를 교환하며 문자열을 뒤집는다. 이후 역순 문자열의 인덱스 0, 2, 4만 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 3회 주제 · 연습 5

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Item { int count; double price; };

int main(void) {
    struct Item x={7, 4.5};
    struct Item *p=&x;
    p->count += 2;
    printf("%d %.1f", x.count, p->count*p->price);
    return 0;
}
정답·해설 보기

정답

9 40.5

해설

구조체 포인터 p는 x의 주소를 가진다. p->count 수정은 x.count에 반영되며, 수정된 개수와 단가를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 3회 주제 · 연습 6

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
#include <string.h>

int main(void) {
    const char *s="NETWORK";
    const char *p=s+3;
    printf("%s %c %zu", p, *(s+2), strlen(s));
    return 0;
}
정답·해설 보기

정답

WORK T 7

해설

문자 포인터를 k만큼 옮기면 k번째 인덱스부터 문자열을 읽는다. %s는 널 문자 전까지, %c는 문자 하나를 출력한다. strlen은 널 문자를 제외한 길이이다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 3회 주제 · 연습 7

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Node { int value; struct Node *next; };

int main(void) {
    struct Node c={8,NULL}, b={7,&c}, a={6,&b};
    struct Node *head=&a;
    a.next=c.next; c.next=&a; b.next=&c; head=&b;
    for (struct Node *p=head; p!=NULL; p=p->next)
        printf("%d", p->value);
    return 0;
}
정답·해설 보기

정답

786

해설

a의 다음은 NULL, c의 다음은 a, b의 다음은 c가 된다. head에서 b → c → a 순서로 따라가며 구분자 없이 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 3회 주제 · 연습 8

프로그래밍 언어

Java 클래스가 인터페이스의 계약을 구현한다는 것을 클래스 선언에 표시하는 키워드를 쓰시오.

정답·해설 보기

정답

implements

해설

클래스 상속의 extends와 구별한다. 클래스는 여러 인터페이스를 구현할 수 있다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 3회 주제 · 연습 9

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

def score(first, *rest, bonus=1, **options):
    return first + sum(rest) + bonus + options.get("extra", 0)

print(score(5, 2, 3, bonus=4, extra=4))
정답·해설 보기

정답

18

해설

남은 위치 인자 2와 3은 rest 튜플, extra는 options 딕셔너리에 들어간다. bonus는 키워드 전용 인자로 4를 받는다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 3회 주제 · 연습 12

프로그래밍 언어

하위 클래스의 생성자에서 상위 클래스의 생성자를 명시적으로 호출할 때 사용하는 Java 키워드를 쓰시오.

정답·해설 보기

정답

super

해설

super(인자)는 부모 생성자를 호출한다. Java 21의 일반적인 생성자 문법에서는 명시적 생성자 호출이 첫 문장이어야 한다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 3회 주제 · 연습 15

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int x=7;
    int a=x++;
    int b=++x;
    printf("%d %d %d", a,b,x);
    return 0;
}
정답·해설 보기

정답

7 9 9

해설

후위 증가는 증가 전 값을 a에 저장하고 x를 증가시킨다. 다음 문장의 전위 증가는 x를 먼저 증가시킨 뒤 b에 저장한다. 각 증가는 별도 문장에서 수행된다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2025년 3회 주제 · 연습 17

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static String pick(Object x){return "O";}
    static String pick(Number x){return "N";}
    static String pick(Integer x){return "I";}
    public static void main(String[] args) {
        Integer x=6;
        Number y=x;
        Object z=x;
        System.out.print(pick(x)+pick(y)+pick(z));
    }
}
정답·해설 보기

정답

INO

해설

오버로딩은 호출 지점 인자의 컴파일 시점 타입으로 선택된다. 세 참조가 같은 Integer 객체를 가리켜도 선언형에 따라 I, N, O가 선택된다.

학습용 재구성 · 주제 참고: Life-Journey · 2025년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 1회 주제 · 연습 1

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Counter {
        private static final Counter ONE=new Counter();
        int value=4;
        private Counter(){}
        static Counter get(){return ONE;}
    }
    public static void main(String[] args) {
        Counter a=Counter.get(), b=Counter.get();
        a.value+=2; b.value+=5;
        System.out.print((a==b)+" "+a.value);
    }
}
정답·해설 보기

정답

true 11

해설

get은 항상 같은 ONE 객체를 반환한다. a와 b의 참조가 같고 두 변수의 변경이 같은 value 필드에 누적된다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 1회 주제 · 연습 2

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    unsigned int x=14u,y=5u;
    unsigned int z=(x & 7u) ^ (y << 1);
    printf("%u %u", z, x >> 2);
    return 0;
}
정답·해설 보기

정답

12 3

해설

x & 7은 하위 3비트를 남긴다. y를 왼쪽으로 한 비트 옮긴 값과 XOR하고, 두 번째 출력은 unsigned x를 오른쪽으로 두 비트 옮긴 값이다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 1회 주제 · 연습 4

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    char s[]="STREAM";
    for (int l=0,r=5; l<r; l++,r--) {
        char t=s[l]; s[l]=s[r]; s[r]=t;
    }
    for (int i=0; i<6; i+=2) printf("%c", s[i]);
    return 0;
}
정답·해설 보기

정답

MET

해설

양 끝 문자를 교환하며 문자열을 뒤집는다. 이후 역순 문자열의 인덱스 0, 2, 4만 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 1회 주제 · 연습 10

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base {
        int value=7;
        Base(){System.out.print(read()+" ");}
        int read(){return value;}
    }
    static class Child extends Base {
        int value=5;
        int read(){return value+1;}
    }
    public static void main(String[] args) {
        Child child=new Child();
        System.out.print(child.read());
    }
}
정답·해설 보기

정답

1 6

해설

부모 생성자 실행 시에도 read 호출은 Child의 재정의 메서드로 연결된다. 그때 Child.value의 명시적 초기화는 아직 실행되지 않아 기본값 0이다. 생성 완료 후에는 설정된 값에 1을 더한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 1회 주제 · 연습 11

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Item { int count; double price; };

int main(void) {
    struct Item x={4, 5.5};
    struct Item *p=&x;
    p->count += 2;
    printf("%d %.1f", x.count, p->count*p->price);
    return 0;
}
정답·해설 보기

정답

6 33.0

해설

구조체 포인터 p는 x의 주소를 가진다. p->count 수정은 x.count에 반영되며, 수정된 개수와 단가를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 1회 주제 · 연습 12

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

words = ['map', 'stack', 'queue']
print("".join(word[0].upper() for word in words))
정답·해설 보기

정답

MSQ

해설

각 단어의 첫 글자를 대문자로 바꾼 후 빈 문자열을 구분자로 연결한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 1회 주제 · 연습 16

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+5);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(4);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

18

해설

Child 생성자가 super에 4+5을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 1회 주제 · 연습 19

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    char s[]="AZBY";
    for (int i=0; s[i]; i++) s[i]='A'+(s[i]-'A'+1)%26;
    printf("%s",s);
    return 0;
}
정답·해설 보기

정답

BACZ

해설

대문자를 0~25로 바꾼 뒤 1칸 이동하고 26으로 나눈 나머지를 이용해 Z 다음을 A로 순환한다. ASCII 문자 집합을 가정한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 2회 주제 · 연습 1

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        String a="unit7";
        String b=new String("unit7");
        String c="unit"+7;
        System.out.print((a==b)+" "+a.equals(b)+" "+(a==c));
    }
}
정답·해설 보기

정답

false true true

해설

new String은 별도 객체이므로 a==b는 거짓이다. equals는 내용을 비교한다. 상수식으로 결합한 c는 같은 문자열 풀의 리터럴을 참조한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 2회 주제 · 연습 6

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

s = "abracadabra"
print(s.count("ab"), sum(ch == "a" for ch in s))
정답·해설 보기

정답

2 5

해설

str.count는 겹치지 않는 부분 문자열의 개수를 센다. 불리언을 합산한 두 번째 식은 각 문자 중 a와 같은 문자의 개수이다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 2회 주제 · 연습 13

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
int f(int n) { return n<=1 ? n : f(n-1)+f(n-2); }

int main(void) {
    printf("%d", f(7));
    return 0;
}
정답·해설 보기

정답

13

해설

f(0)=0, f(1)=1을 기저 조건으로, f(n)은 직전 두 값의 합이다. 같은 부분 문제가 여러 번 계산되는 재귀이다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 2회 주제 · 연습 14

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static int value=3;
    int local=7;
    void change(int value){
        value+=2; this.local+=value; Main.value++;
    }
    public static void main(String[] args) {
        Main m=new Main();
        m.change(4);
        System.out.print(Main.value+" "+m.local);
    }
}
정답·해설 보기

정답

4 13

해설

매개변수 value가 같은 이름의 static 필드를 가린다. Main.value로 지정한 문장만 클래스 필드를 증가시키며 this.local은 객체 필드이다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 2회 주제 · 연습 15

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
#include <string.h>

int main(void) {
    const char *s="STORAGE";
    const char *p=s+3;
    printf("%s %c %zu", p, *(s+2), strlen(s));
    return 0;
}
정답·해설 보기

정답

RAGE O 7

해설

문자 포인터를 k만큼 옮기면 k번째 인덱스부터 문자열을 읽는다. %s는 널 문자 전까지, %c는 문자 하나를 출력한다. strlen은 널 문자를 제외한 길이이다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 2회 주제 · 연습 17

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        String s="STREAM", out="";
        for(int i=0;i<s.length();i++) out=s.charAt(i)+out;
        System.out.print(out.substring(1,4));
    }
}
정답·해설 보기

정답

AER

해설

새 문자를 앞에 붙여 전체 문자열을 뒤집은 뒤 인덱스 1 이상 4 미만의 부분 문자열을 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 2회 주제 · 연습 18

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    unsigned int x=14u,y=7u;
    unsigned int z=(x & 7u) ^ (y << 1);
    printf("%u %u", z, x >> 2);
    return 0;
}
정답·해설 보기

정답

8 3

해설

x & 7은 하위 3비트를 남긴다. y를 왼쪽으로 한 비트 옮긴 값과 XOR하고, 두 번째 출력은 unsigned x를 오른쪽으로 두 비트 옮긴 값이다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 2회 주제 · 연습 19

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Item { int count; double price; };

int main(void) {
    struct Item x={3, 7.5};
    struct Item *p=&x;
    p->count += 2;
    printf("%d %.1f", x.count, p->count*p->price);
    return 0;
}
정답·해설 보기

정답

5 37.5

해설

구조체 포인터 p는 x의 주소를 가진다. p->count 수정은 x.count에 반영되며, 수정된 개수와 단가를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 2회 주제 · 연습 20

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static String pick(Object x){return "O";}
    static String pick(Number x){return "N";}
    static String pick(Integer x){return "I";}
    static <T> String wrap(T x){return pick(x);}
    public static void main(String[] args) {
        Integer x=5;
        System.out.print(pick(x)+wrap(x)+pick((Number)x));
    }
}
정답·해설 보기

정답

ION

해설

직접 Integer를 넘기면 I, Number로 형변환하면 N이다. 상한이 Object인 T를 받는 wrap 내부에서는 컴파일 시 Object 오버로드가 선택되어 O이다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 3회 주제 · 연습 1

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static String pick(Object x){return "O";}
    static String pick(Number x){return "N";}
    static String pick(Integer x){return "I";}
    static <T> String wrap(T x){return pick(x);}
    public static void main(String[] args) {
        Integer x=5;
        System.out.print(pick(x)+wrap(x)+pick((Number)x));
    }
}
정답·해설 보기

정답

ION

해설

직접 Integer를 넘기면 I, Number로 형변환하면 N이다. 상한이 Object인 T를 받는 wrap 내부에서는 컴파일 시 Object 오버로드가 선택되어 O이다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 3회 주제 · 연습 2

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

a = {7, 8, 9}
b = {8, 10}
print(sorted((a | b) - (a & b)))
정답·해설 보기

정답

[7, 9, 10]

해설

합집합에서 교집합을 빼므로 한쪽에만 있는 값들이 남는다. 집합 자체의 출력 순서 대신 sorted로 정렬된 리스트를 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 3회 주제 · 연습 7

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int data[] = {7, 11, 14, 16};
    int *p=data+1;
    p[1] += 2;
    printf("%d %d %d", *p, *(p+1), data[3]-data[0]);
    return 0;
}
정답·해설 보기

정답

11 16 9

해설

p는 data[1]을 가리킨다. p[1]과 *(p+1)은 모두 data[2]이므로 같은 원소가 수정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 3회 주제 · 연습 10

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

values = list(range(3, 9))
print(sum(values[::2]) - min(values))
정답·해설 보기

정답

12

해설

인덱스 0·2·4의 합에서 전체 리스트의 최소값을 한 번 뺀다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 3회 주제 · 연습 11

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base {
        int value=5;
        Base(){System.out.print(read()+" ");}
        int read(){return value;}
    }
    static class Child extends Base {
        int value=2;
        int read(){return value+1;}
    }
    public static void main(String[] args) {
        Child child=new Child();
        System.out.print(child.read());
    }
}
정답·해설 보기

정답

1 3

해설

부모 생성자 실행 시에도 read 호출은 Child의 재정의 메서드로 연결된다. 그때 Child.value의 명시적 초기화는 아직 실행되지 않아 기본값 0이다. 생성 완료 후에는 설정된 값에 1을 더한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 3회 주제 · 연습 12

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Item { int count; double price; };

int main(void) {
    struct Item x={7, 2.5};
    struct Item *p=&x;
    p->count += 2;
    printf("%d %.1f", x.count, p->count*p->price);
    return 0;
}
정답·해설 보기

정답

9 22.5

해설

구조체 포인터 p는 x의 주소를 가진다. p->count 수정은 x.count에 반영되며, 수정된 개수와 단가를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 3회 주제 · 연습 16

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int x=5;
    int a=x++;
    int b=++x;
    printf("%d %d %d", a,b,x);
    return 0;
}
정답·해설 보기

정답

5 7 7

해설

후위 증가는 증가 전 값을 a에 저장하고 x를 증가시킨다. 다음 문장의 전위 증가는 x를 먼저 증가시킨 뒤 b에 저장한다. 각 증가는 별도 문장에서 수행된다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 3회 주제 · 연습 18

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+2);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(4);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

12

해설

Child 생성자가 super에 4+2을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2024년 3회 주제 · 연습 19

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int result=6;
        try {
            int divisor=0;
            result+=12/divisor;
            System.out.print("T");
        } catch(ArithmeticException e) {
            result+=3; System.out.print("E");
        } finally {
            result+=2; System.out.print("F");
        }
        System.out.print(result);
    }
}
정답·해설 보기

정답

EF11

해설

정수 0 나눗셈은 ArithmeticException을 발생시키며 덧셈 대입은 완료되지 않는다. 예외 여부와 관계없이 finally를 실행한 뒤 최종 result를 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2024년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 1

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static int value=5;
    int local=3;
    void change(int value){
        value+=2; this.local+=value; Main.value++;
    }
    public static void main(String[] args) {
        Main m=new Main();
        m.change(6);
        System.out.print(Main.value+" "+m.local);
    }
}
정답·해설 보기

정답

6 11

해설

매개변수 value가 같은 이름의 static 필드를 가린다. Main.value로 지정한 문장만 클래스 필드를 증가시키며 this.local은 객체 필드이다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 2

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
#include <string.h>

int main(void) {
    const char *s="DATABASE";
    const char *p=s+2;
    printf("%s %c %zu", p, *(s+2), strlen(s));
    return 0;
}
정답·해설 보기

정답

TABASE T 8

해설

문자 포인터를 k만큼 옮기면 k번째 인덱스부터 문자열을 읽는다. %s는 널 문자 전까지, %c는 문자 하나를 출력한다. strlen은 널 문자를 제외한 길이이다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 3

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
#include <string.h>

int main(void) {
    char src[]="MEMORY", dst[16];
    int i=0;
    while ((dst[i]=src[i]) != '\0') i++;
    dst[1]='X';
    printf("%s %zu", dst, strlen(dst));
    return 0;
}
정답·해설 보기

정답

MXMORY 6

해설

널 문자까지 복사하므로 dst는 유효한 문자열이다. 두 번째 문자를 바꾸어도 문자열 길이는 유지된다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 9

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    const char *s="11101";
    int result=0;
    for (int i=0; s[i]; i++) result=result*2+(s[i]-'0');
    printf("%d", result);
    return 0;
}
정답·해설 보기

정답

29

해설

기존 값을 두 배 한 뒤 다음 비트를 더한다. 문자에서 문자 0을 빼면 정수 비트 0 또는 1을 얻는다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 14

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int a[] = {11, 6, 9, 7};
    for (int i=0; i<3; i++)
        for (int j=0; j<3-i; j++)
            if (a[j] > a[j+1]) {
                int t=a[j]; a[j]=a[j+1]; a[j+1]=t;
            }
    printf("%d %d %d %d", a[0], a[1], a[2], a[3]);
    return 0;
}
정답·해설 보기

정답

6 7 9 11

해설

인접한 두 값의 순서가 뒤집혀 있으면 교환하는 버블 정렬이다. 각 바깥 반복 후 큰 값이 오른쪽 끝에 확정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 15

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

a = {3, 4, 5}
b = {4, 6}
print(sorted((a | b) - (a & b)))
정답·해설 보기

정답

[3, 5, 6]

해설

합집합에서 교집합을 빼므로 한쪽에만 있는 값들이 남는다. 집합 자체의 출력 순서 대신 sorted로 정렬된 리스트를 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 17

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+3);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(7);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

20

해설

Child 생성자가 super에 7+3을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 1회 주제 · 연습 20

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+3);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(3);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

12

해설

Child 생성자가 super에 3+3을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 1

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int a[]={3,4,5,6};
    for (int k=0; k<2; k++) {
        int first=a[0];
        for (int i=0; i<3; i++) a[i]=a[i+1];
        a[3]=first;
    }
    printf("%d %d %d %d",a[0],a[1],a[2],a[3]);
    return 0;
}
정답·해설 보기

정답

5 6 3 4

해설

한 반복마다 첫 값을 끝으로 보내 왼쪽으로 한 칸 순환 이동한다. 두 번 실행하므로 원래 인덱스 2의 값이 맨 앞에 온다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 2

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int money=420, count=0;
        int[] coins={100,50,10};
        for(int coin:coins){count+=money/coin;money%=coin;}
        System.out.print(count+" "+money);
    }
}
정답·해설 보기

정답

6 0

해설

각 단위로 사용할 동전 수를 정수 나눗셈으로 구하고 나머지만 다음 단위로 넘긴다. 이 문제에 제시된 단위와 금액에 대해 계산한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 3

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Item { int count; double price; };

int main(void) {
    struct Item x={7, 5.5};
    struct Item *p=&x;
    p->count += 2;
    printf("%d %.1f", x.count, p->count*p->price);
    return 0;
}
정답·해설 보기

정답

9 49.5

해설

구조체 포인터 p는 x의 주소를 가진다. p->count 수정은 x.count에 반영되며, 수정된 개수와 단가를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 5

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
#include <string.h>

int main(void) {
    const char *s="PROGRAM";
    const char *p=s+1;
    printf("%s %c %zu", p, *(s+2), strlen(s));
    return 0;
}
정답·해설 보기

정답

ROGRAM O 7

해설

문자 포인터를 k만큼 옮기면 k번째 인덱스부터 문자열을 읽는다. %s는 널 문자 전까지, %c는 문자 하나를 출력한다. strlen은 널 문자를 제외한 길이이다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 7

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+5);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(5);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

20

해설

Child 생성자가 super에 5+5을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 9

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Node { int value; struct Node *next; };

int main(void) {
    struct Node c={6,NULL}, b={5,&c}, a={4,&b};
    struct Node *head=&a;
    a.next=c.next; c.next=&a; b.next=&c; head=&b;
    for (struct Node *p=head; p!=NULL; p=p->next)
        printf("%d", p->value);
    return 0;
}
정답·해설 보기

정답

564

해설

a의 다음은 NULL, c의 다음은 a, b의 다음은 c가 된다. head에서 b → c → a 순서로 따라가며 구분자 없이 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 14

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        String a="unit4";
        String b=new String("unit4");
        String c="unit"+4;
        System.out.print((a==b)+" "+a.equals(b)+" "+(a==c));
    }
}
정답·해설 보기

정답

false true true

해설

new String은 별도 객체이므로 a==b는 거짓이다. equals는 내용을 비교한다. 상수식으로 결합한 c는 같은 문자열 풀의 리터럴을 참조한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 18

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int a[] = {12, 7, 10, 8};
    for (int i=0; i<3; i++)
        for (int j=0; j<3-i; j++)
            if (a[j] > a[j+1]) {
                int t=a[j]; a[j]=a[j+1]; a[j+1]=t;
            }
    printf("%d %d %d %d", a[0], a[1], a[2], a[3]);
    return 0;
}
정답·해설 보기

정답

7 8 10 12

해설

인접한 두 값의 순서가 뒤집혀 있으면 교환하는 버블 정렬이다. 각 바깥 반복 후 큰 값이 오른쪽 끝에 확정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 2회 주제 · 연습 19

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

s = "STRUCTURE"
print(s[1:7:2], s[-4:][::-1])
정답·해설 보기

정답

TUT ERUT

해설

첫 슬라이스는 인덱스 1·3·5의 문자를 고른다. 둘째는 마지막 네 문자를 먼저 얻은 뒤 역순으로 바꾼다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 3회 주제 · 연습 1

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+7);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(6);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

26

해설

Child 생성자가 super에 6+7을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 3회 주제 · 연습 4

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
int gcd(int a,int b) { return b==0 ? a : gcd(b,a%b); }

int main(void) {
    int a=42,b=28;
    int g=gcd(a,b);
    printf("%d %d", g, a/g*b);
    return 0;
}
정답·해설 보기

정답

14 84

해설

유클리드 호제법으로 최대공약수를 구한다. a/g*b는 두 양수의 최소공배수이다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 3회 주제 · 연습 5

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Item { int count; double price; };

int main(void) {
    struct Item x={4, 7.5};
    struct Item *p=&x;
    p->count += 2;
    printf("%d %.1f", x.count, p->count*p->price);
    return 0;
}
정답·해설 보기

정답

6 45.0

해설

구조체 포인터 p는 x의 주소를 가진다. p->count 수정은 x.count에 반영되며, 수정된 개수와 단가를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 3회 주제 · 연습 8

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
int fact(int n) { return n<=1 ? 1 : n*fact(n-1); }

int main(void) {
    printf("%d", fact(5));
    return 0;
}
정답·해설 보기

정답

120

해설

기저 조건에서 1을 반환하고, 복귀하면서 2부터 5까지 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 3회 주제 · 연습 10

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
#include <string.h>

int main(void) {
    const char *s="NETWORK";
    const char *p=s+2;
    printf("%s %c %zu", p, *(s+2), strlen(s));
    return 0;
}
정답·해설 보기

정답

TWORK T 7

해설

문자 포인터를 k만큼 옮기면 k번째 인덱스부터 문자열을 읽는다. %s는 널 문자 전까지, %c는 문자 하나를 출력한다. strlen은 널 문자를 제외한 길이이다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 3회 주제 · 연습 11

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Counter {
        private static final Counter ONE=new Counter();
        int value=6;
        private Counter(){}
        static Counter get(){return ONE;}
    }
    public static void main(String[] args) {
        Counter a=Counter.get(), b=Counter.get();
        a.value+=2; b.value+=7;
        System.out.print((a==b)+" "+a.value);
    }
}
정답·해설 보기

정답

true 15

해설

get은 항상 같은 ONE 객체를 반환한다. a와 b의 참조가 같고 두 변수의 변경이 같은 value 필드에 누적된다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 3회 주제 · 연습 13

프로그래밍 언어

다음 Java 코드가 컴파일되는지 판단하고, 문제가 있다면 이유와 수정 예를 쓰시오.

public class Main {
    int value = 7;
    public static void main(String[] args) {
        System.out.print(value);
    }
}
정답·해설 보기

정답

컴파일 오류. static 메서드에서 인스턴스 필드 value에 객체 없이 접근했다. 예: new Main().value로 접근하거나 value를 의도에 맞게 static으로 선언한다.

해설

main은 클래스 메서드이고 value는 객체별 필드이다. 명시적인 객체 참조가 필요하다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2023년 3회 주제 · 연습 14

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

s = "  red:7:blue  "
parts = s.strip().split(":")
print(parts[0], int(parts[1]) + len(parts[2]))
정답·해설 보기

정답

red 11

해설

strip은 양끝 공백을 제거하고 split은 콜론을 기준으로 나눈다. 가운데 문자열은 int로 변환하여 마지막 문자열 길이 4와 더한다.

학습용 재구성 · 주제 참고: Life-Journey · 2023년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 1회 주제 · 연습 3

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+8);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(5);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

26

해설

Child 생성자가 super에 5+8을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 1회 주제 · 연습 6

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

a, b = divmod(50, 6)
print(a, b, 50 / 6)
정답·해설 보기

정답

8 2 8.333333333333334

해설

divmod는 몫과 나머지를 튜플로 반환한다. /는 실수 나눗셈이며 //와 구별한다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 1회 주제 · 연습 7

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

items = [3, 8]
items.extend([4, 9])
x = items.pop(1)
items.reverse()
print(x, items)
정답·해설 보기

정답

8 [9, 4, 3]

해설

extend는 각 원소를 추가한다. pop(1)은 두 번째 값을 제거하며 반환하고 reverse는 남은 리스트를 제자리에서 뒤집는다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 1회 주제 · 연습 11

프로그래밍 언어

Java 클래스 이름이 Invoice이다. 객체를 초기화하는 생성자의 이름과 반환형 선언 여부를 쓰시오.

정답·해설 보기

정답

이름: Invoice / 반환형을 선언하지 않는다.

해설

void를 붙이면 생성자가 아닌 메서드가 된다. 클래스 이름과 정확히 일치해야 한다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 1회 주제 · 연습 14

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
int fact(int n) { return n<=1 ? 1 : n*fact(n-1); }

int main(void) {
    printf("%d", fact(7));
    return 0;
}
정답·해설 보기

정답

5040

해설

기저 조건에서 1을 반환하고, 복귀하면서 2부터 7까지 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 1회 주제 · 연습 15

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int x=789, result=0;
    while (x>0) { result=result*10+x%10; x/=10; }
    printf("%d", result);
    return 0;
}
정답·해설 보기

정답

987

해설

x%10으로 마지막 자릿수를 얻어 result 뒤에 붙이고 정수 나눗셈 x/=10으로 처리한 자릿수를 제거한다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 1회 주제 · 연습 19

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int count=0;
    for (int x=2; x<=22; x++) {
        int prime=1;
        for (int d=2; d*d<=x; d++)
            if (x%d==0) { prime=0; break; }
        count += prime;
    }
    printf("%d", count);
    return 0;
}
정답·해설 보기

정답

8

해설

각 수의 제곱근 이하에서 약수를 발견하면 소수가 아니다. 2부터 상한까지 소수인 경우에만 count에 1을 더한다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 2회 주제 · 연습 7

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int x=2, result=6;
        switch(x) {
            case 1: result+=2;
            case 2: result*=3; break;
            default: result=0;
        }
        System.out.print(result);
    }
}
정답·해설 보기

정답

18

해설

case 1에는 break가 없어서 case 2의 처리까지 이어진다. x가 2이면 곱셈부터 실행한다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 2회 주제 · 연습 8

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int data[] = {3, 7, 10, 12};
    int *p=data+1;
    p[1] += 3;
    printf("%d %d %d", *p, *(p+1), data[3]-data[0]);
    return 0;
}
정답·해설 보기

정답

7 13 9

해설

p는 data[1]을 가리킨다. p[1]과 *(p+1)은 모두 data[2]이므로 같은 원소가 수정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 2회 주제 · 연습 13

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

s = "DATABASES"
print(s[1:7:2], s[-4:][::-1])
정답·해설 보기

정답

AAA SESA

해설

첫 슬라이스는 인덱스 1·3·5의 문자를 고른다. 둘째는 마지막 네 문자를 먼저 얻은 뒤 역순으로 바꾼다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 2회 주제 · 연습 15

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int data[] = {7, 11, 14, 16};
    int *p=data+1;
    p[1] += 3;
    printf("%d %d %d", *p, *(p+1), data[3]-data[0]);
    return 0;
}
정답·해설 보기

정답

11 17 9

해설

p는 data[1]을 가리킨다. p[1]과 *(p+1)은 모두 data[2]이므로 같은 원소가 수정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 2회 주제 · 연습 16

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int data[] = {4, 8, 11, 13};
    int *p=data+1;
    p[1] += 3;
    printf("%d %d %d", *p, *(p+1), data[3]-data[0]);
    return 0;
}
정답·해설 보기

정답

8 14 9

해설

p는 data[1]을 가리킨다. p[1]과 *(p+1)은 모두 data[2]이므로 같은 원소가 수정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 2회 주제 · 연습 17

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+3);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(6);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

18

해설

Child 생성자가 super에 6+3을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 3회 주제 · 연습 1

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int grid[3][3]={{7,2,3},{4,5,6},{7,8,9}};
    int dr[]={-1,0,1,0}, dc[]={0,1,0,-1};
    int sum=0;
    for (int k=0; k<4; k++) sum += grid[1+dr[k]][1+dc[k]];
    printf("%d", sum);
    return 0;
}
정답·해설 보기

정답

20

해설

중앙 칸의 상·우·하·좌 값인 2, 6, 8, 4만 더한다. 중앙값과 대각선은 포함하지 않는다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 3회 주제 · 연습 4

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Node { int value; struct Node *next; };

int main(void) {
    struct Node c={5,NULL}, b={4,&c}, a={3,&b};
    struct Node *head=&a;
    a.next=c.next; c.next=&a; b.next=&c; head=&b;
    for (struct Node *p=head; p!=NULL; p=p->next)
        printf("%d", p->value);
    return 0;
}
정답·해설 보기

정답

453

해설

a의 다음은 NULL, c의 다음은 a, b의 다음은 c가 된다. head에서 b → c → a 순서로 따라가며 구분자 없이 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 3회 주제 · 연습 9

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

values = range(1, 6)
print([x*x for x in values if x % 2 == 0])
정답·해설 보기

정답

[4, 16]

해설

range의 끝 값은 포함하지 않는다. 짝수만 필터링한 뒤 각 값의 제곱으로 새 리스트를 만든다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 3회 주제 · 연습 13

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static String pick(Object x){return "O";}
    static String pick(Number x){return "N";}
    static String pick(Integer x){return "I";}
    public static void main(String[] args) {
        Integer x=6;
        Number y=x;
        Object z=x;
        System.out.print(pick(x)+pick(y)+pick(z));
    }
}
정답·해설 보기

정답

INO

해설

오버로딩은 호출 지점 인자의 컴파일 시점 타입으로 선택된다. 세 참조가 같은 Integer 객체를 가리켜도 선언형에 따라 I, N, O가 선택된다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 3회 주제 · 연습 19

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int result=3;
        try {
            int divisor=0;
            result+=12/divisor;
            System.out.print("T");
        } catch(ArithmeticException e) {
            result+=3; System.out.print("E");
        } finally {
            result+=2; System.out.print("F");
        }
        System.out.print(result);
    }
}
정답·해설 보기

정답

EF8

해설

정수 0 나눗셈은 ArithmeticException을 발생시키며 덧셈 대입은 완료되지 않는다. 예외 여부와 관계없이 finally를 실행한 뒤 최종 result를 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2022년 3회 주제 · 연습 20

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static String pick(Object x){return "O";}
    static String pick(Number x){return "N";}
    static String pick(Integer x){return "I";}
    public static void main(String[] args) {
        Integer x=5;
        Number y=x;
        Object z=x;
        System.out.print(pick(x)+pick(y)+pick(z));
    }
}
정답·해설 보기

정답

INO

해설

오버로딩은 호출 지점 인자의 컴파일 시점 타입으로 선택된다. 세 참조가 같은 Integer 객체를 가리켜도 선언형에 따라 I, N, O가 선택된다.

학습용 재구성 · 주제 참고: Life-Journey · 2022년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 1회 주제 · 연습 5

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

words = ['unit', 'branch', 'path']
print("".join(word[0].upper() for word in words))
정답·해설 보기

정답

UBP

해설

각 단어의 첫 글자를 대문자로 바꾼 후 빈 문자열을 구분자로 연결한다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 1회 주제 · 연습 7

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int[][] data=new int[3][];
        data[0]=new int[4];
        data[1]=new int[2];
        data[2]=new int[6];
        System.out.print(data.length+":"+(data[0].length+data[1].length+data[2].length));
    }
}
정답·해설 보기

정답

3:12

해설

바깥 배열 길이는 행 수 3이다. 각 행 배열의 길이는 서로 다를 수 있으며 길이의 합을 별도로 구한다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 1회 주제 · 연습 15

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Item { int count; double price; };

int main(void) {
    struct Item x={5, 6.5};
    struct Item *p=&x;
    p->count += 2;
    printf("%d %.1f", x.count, p->count*p->price);
    return 0;
}
정답·해설 보기

정답

7 45.5

해설

구조체 포인터 p는 x의 주소를 가진다. p->count 수정은 x.count에 반영되며, 수정된 개수와 단가를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 1회 주제 · 연습 17

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int[] values={4,6,8,10};
        int total=0;
        for (int i=0;i<values.length;i++)
            if (i%2==0) total+=values[i];
        System.out.print(total);
    }
}
정답·해설 보기

정답

12

해설

조건은 값의 홀짝이 아니라 인덱스의 홀짝이다. 인덱스 0과 2의 원소만 누적한다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 2회 주제 · 연습 7

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

x = 64
print(x >> 2, x << 1)
정답·해설 보기

정답

16 128

해설

양의 정수를 오른쪽으로 2비트 이동하면 4로 나눈 몫, 왼쪽으로 1비트 이동하면 2배가 된다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 2회 주제 · 연습 16

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int value=1;
    for (int i=0; i<5; i++) value *= 8;
    printf("%d", value);
    return 0;
}
정답·해설 보기

정답

32768

해설

1에서 시작해 8을(를) 5번 곱하므로 8의 5제곱이다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 2회 주제 · 연습 17

프로그래밍 언어

객체를 생성하지 않고 클래스 이름으로 호출할 메서드를 선언하려 한다. 멤버를 클래스에 소속시키는 Java 키워드를 쓰시오.

정답·해설 보기

정답

static

해설

static 메서드는 인스턴스 없이 호출할 수 있다. 인스턴스 필드에는 객체 참조를 통해 접근해야 한다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 2회 주제 · 연습 18

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int data[] = {4, 8, 11, 13};
    int *p=data+1;
    p[1] += 8;
    printf("%d %d %d", *p, *(p+1), data[3]-data[0]);
    return 0;
}
정답·해설 보기

정답

8 19 9

해설

p는 data[1]을 가리킨다. p[1]과 *(p+1)은 모두 data[2]이므로 같은 원소가 수정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 2회 주제 · 연습 19

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+8);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(6);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

28

해설

Child 생성자가 super에 6+8을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 3회 주제 · 연습 1

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Counter {
        private static final Counter ONE=new Counter();
        int value=3;
        private Counter(){}
        static Counter get(){return ONE;}
    }
    public static void main(String[] args) {
        Counter a=Counter.get(), b=Counter.get();
        a.value+=2; b.value+=3;
        System.out.print((a==b)+" "+a.value);
    }
}
정답·해설 보기

정답

true 8

해설

get은 항상 같은 ONE 객체를 반환한다. a와 b의 참조가 같고 두 변수의 변경이 같은 value 필드에 누적된다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 3회 주제 · 연습 11

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int x=3;
        boolean a=x>2, b=x%2==0;
        System.out.print((a & b)+" "+(a | b)+" "+(a ^ b));
    }
}
정답·해설 보기

정답

false true true

해설

a는 참이다. 불리언 &는 둘 다 참일 때, |는 하나 이상 참일 때, ^는 두 값이 다를 때 참이다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 3회 주제 · 연습 12

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int data[] = {5, 9, 12, 14};
    int *p=data+1;
    p[1] += 3;
    printf("%d %d %d", *p, *(p+1), data[3]-data[0]);
    return 0;
}
정답·해설 보기

정답

9 15 9

해설

p는 data[1]을 가리킨다. p[1]과 *(p+1)은 모두 data[2]이므로 같은 원소가 수정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 3회 주제 · 연습 14

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

x = [4, 3]
y = x[:]
print(x == y, x is y, bool([]))
정답·해설 보기

정답

True False False

해설

리스트 슬라이스는 별도 리스트를 만든다. ==는 원소 내용을, is는 객체 동일성을 비교하며 빈 리스트의 불리언 값은 False이다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2021년 3회 주제 · 연습 17

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
struct Item { int count; double price; };

int main(void) {
    struct Item x={5, 3.5};
    struct Item *p=&x;
    p->count += 2;
    printf("%d %.1f", x.count, p->count*p->price);
    return 0;
}
정답·해설 보기

정답

7 24.5

해설

구조체 포인터 p는 x의 주소를 가진다. p->count 수정은 x.count에 반영되며, 수정된 개수와 단가를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2021년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 1회 주제 · 연습 12

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int a[] = {10, 5, 8, 6};
    for (int i=0; i<3; i++)
        for (int j=0; j<3-i; j++)
            if (a[j] > a[j+1]) {
                int t=a[j]; a[j]=a[j+1]; a[j+1]=t;
            }
    printf("%d %d %d %d", a[0], a[1], a[2], a[3]);
    return 0;
}
정답·해설 보기

정답

5 6 8 10

해설

인접한 두 값의 순서가 뒤집혀 있으면 교환하는 버블 정렬이다. 각 바깥 반복 후 큰 값이 오른쪽 끝에 확정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 1회 주제 · 연습 13

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int[] values={7,9,11,13};
        int total=0;
        for (int i=0;i<values.length;i++)
            if (i%2==0) total+=values[i];
        System.out.print(total);
    }
}
정답·해설 보기

정답

18

해설

조건은 값의 홀짝이 아니라 인덱스의 홀짝이다. 인덱스 0과 2의 원소만 누적한다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 1회 주제 · 연습 14

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int x=2, result=4;
        switch(x) {
            case 1: result+=2;
            case 2: result*=3; break;
            default: result=0;
        }
        System.out.print(result);
    }
}
정답·해설 보기

정답

12

해설

case 1에는 break가 없어서 case 2의 처리까지 이어진다. x가 2이면 곱셈부터 실행한다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 1회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 2회 주제 · 연습 2

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

a = {3, 4, 5}
b = {4, 6}
print(sorted((a | b) - (a & b)))
정답·해설 보기

정답

[3, 5, 6]

해설

합집합에서 교집합을 빼므로 한쪽에만 있는 값들이 남는다. 집합 자체의 출력 순서 대신 sorted로 정렬된 리스트를 출력한다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 2회 주제 · 연습 5

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+6);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(4);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

20

해설

Child 생성자가 super에 4+6을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 2회 주제 · 연습 19

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+6);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(7);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

26

해설

Child 생성자가 super에 7+6을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 2회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 3회 주제 · 연습 2

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int result=0;
    for (int i=1; i<=6; i++) result *= i;
    printf("%d", result);
    return 0;
}
정답·해설 보기

정답

0

해설

누적 곱의 초기값이 0이므로 어떤 수를 곱해도 0이다. 곱셈 누적의 항등원은 1이라는 점을 확인한다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 3회 주제 · 연습 13

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>

int main(void) {
    int data[] = {3, 7, 10, 12};
    int *p=data+1;
    p[1] += 8;
    printf("%d %d %d", *p, *(p+1), data[3]-data[0]);
    return 0;
}
정답·해설 보기

정답

7 18 9

해설

p는 data[1]을 가리킨다. p[1]과 *(p+1)은 모두 data[2]이므로 같은 원소가 수정된다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 3회 주제 · 연습 15

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static class Base { int value; Base(int v){value=v;} int read(){return value;} }
    static class Child extends Base {
        Child(int v){super(v+8);}
        @Override int read(){return super.read()*2;}
    }
    public static void main(String[] args) {
        Base item=new Child(7);
        System.out.print(item.read());
    }
}
정답·해설 보기

정답

30

해설

Child 생성자가 super에 7+8을 전달한다. 변수의 선언형은 Base여도 실제 객체가 Child이므로 재정의한 read가 실행되고 부모의 값에 2를 곱한다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 3회 주제 · 연습 17

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static int count=6;
    Main(){count++;}
    public static void main(String[] args) {
        new Main();
        new Main();
        System.out.print(Main.count);
    }
}
정답·해설 보기

정답

8

해설

static 필드는 인스턴스마다 따로 생기지 않고 클래스에 공유된다. 객체를 두 개 만들면서 같은 count가 두 번 증가한다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 3회 주제 · 연습 19

프로그래밍 언어

Java에서 객체 생성 시 초기화를 수행하고 클래스 이름과 같은 이름을 사용하며 반환형을 선언하지 않는 구성 요소를 쓰시오.

정답·해설 보기

정답

생성자(Constructor)

해설

생성자는 메서드와 달리 반환형을 쓰지 않는다. 오버로딩할 수 있지만 상속되거나 오버라이딩되지는 않는다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 3회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 4회 주제 · 연습 5

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int x=20;
        String result="";
        while(x>0){ result=(x%2)+result; x/=2; }
        System.out.print(result);
    }
}
정답·해설 보기

정답

10100

해설

2로 나눈 나머지를 문자열 앞에 붙인다. 낮은 자리 비트부터 구하므로 앞에 붙여야 정상적인 2진수 순서가 된다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 4회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 4회 주제 · 연습 6

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {

    public static void main(String[] args) {
        int[][] grid=new int[2][3];
        int value=7;
        for(int col=0;col<3;col++)
            for(int row=0;row<2;row++) grid[row][col]=value++;
        System.out.print(grid[0][2]+" "+grid[1][0]);
    }
}
정답·해설 보기

정답

11 8

해설

열 반복이 바깥에 있으므로 각 열에서 위아래 순서로 채운다. 첫 행 마지막 열은 시작값+4, 둘째 행 첫 열은 시작값+1이다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 4회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 4회 주제 · 연습 9

프로그래밍 언어

다음 Python 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Python 3 기준이다.

rows = [[3, 3], [5], [4, 6]]
print([row[-1] for row in rows])
정답·해설 보기

정답

[3, 5, 6]

해설

바깥 리스트의 각 행에서 마지막 원소를 하나씩 가져온다. 음수 인덱스 -1은 해당 리스트의 마지막 원소이다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 4회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 4회 주제 · 연습 18

프로그래밍 언어

다음 C 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. C11, ASCII 문자 집합을 기준으로 한다.

#include <stdio.h>
#include <string.h>

int main(void) {
    const char *s="PROGRAM";
    const char *p=s+3;
    printf("%s %c %zu", p, *(s+2), strlen(s));
    return 0;
}
정답·해설 보기

정답

GRAM O 7

해설

문자 포인터를 k만큼 옮기면 k번째 인덱스부터 문자열을 읽는다. %s는 널 문자 전까지, %c는 문자 하나를 출력한다. strlen은 널 문자를 제외한 길이이다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 4회 비공식 복원 (새 창)

답안과 비교한 결과

2020년 4회 주제 · 연습 19

프로그래밍 언어

다음 Java 코드의 실행 결과를 쓰시오. 출력에 있는 공백과 줄바꿈을 구분하시오. Java 21 기준이다.

public class Main {
    static int f(int n) { return n<=1 ? n : f(n-1)+f(n-2); }
    public static void main(String[] args) {
        System.out.print(f(4));
    }
}
정답·해설 보기

정답

3

해설

f(0)=0, f(1)=1을 기저 조건으로, f(n)은 직전 두 값의 합이다. 같은 부분 문제가 여러 번 계산되는 재귀이다.

학습용 재구성 · 주제 참고: Life-Journey · 2020년 4회 비공식 복원 (새 창)

답안과 비교한 결과

답안과 확인 상태는 현재 브라우저에만 저장됩니다. ‘맞았어요’ 표시는 본인이 확인한 학습 기록이며 실제 시험 점수가 아닙니다.

카톡에서 정보 얻기