본문 바로가기
카테고리 없음

2021 정보처리기사 실기 1회 프로그래밍 문제 해설

by picker_life 2024. 3. 25.
반응형

2021 정보처리기사 실기 1회 5번

문제

5. 다음은 파이썬 코드이다. 출력 결과를 쓰시오.

 

1
2
3
4
5
6
7
8
9
 
class good :
    li = ["seoul", "kyeonggi","inchon","daejeon","daegu","pusan"]
 
g = good()
str01 = ''
for i in g.li:
    str01 = str01 + i[0]
    
print(str01)
cs

 

정답

skiddp

해설

  1. good라는 이름의 클래스를 정의합니다. 이 클래스 내에는 li라는 이름의 클래스 변수가 있으며, 이 변수는 여러 도시 이름을 문자열로 가지고 있는 리스트입니다: ["seoul", "kyeonggi", "inchon", "daejeon", "daegu", "pusan"].
  2. g = good()을 통해 good 클래스의 인스턴스를 생성합니다. 이 인스턴스는 클래스 변수 li에 접근할 수 있습니다.
  3. str01 = ''를 사용하여 빈 문자열 str01을 생성합니다.
  4. for i in g.li: 루프를 사용하여 g.li 리스트에 있는 각 항목에 대해 반복합니다. 여기서 i는 리스트의 각 요소(도시 이름)를 나타냅니다.
  5. 루프의 각 반복에서 str01 = str01 + i[0]는 i의 첫 번째 문자 (즉, 각 도시 이름의 첫 글자)를 str01에 추가합니다.

루프가 끝난 후, str01에는 g.li에 있는 각 도시 이름의 첫 글자가 순서대로 연결되어 있습니다. 코드의 실행 결과는 str01에 ["seoul", "kyeonggi", "inchon", "daejeon", "daegu", "pusan"]의 각 항목의 첫 글자인 s, k, i, d, d, p가 연결된 문자열 skiddp가 저장됩니다.

따라서 최종적인 출력 결과는 skiddp입니다.

 

2021 정보처리기사 실기 1회 7번

문제

7. 다음 Java 프로그램 결과를 쓰시오.

 

1
2
3
4
5
6
7
8
public class good{
    public static void main(String[] args){
        int[][]arr = new int[][]{{45,50,75},{89}};
        System.out.println(arr[0].length);
        System.out.println(arr[1].length);
        System.out.println(arr[0][0]);
        System.out.println(arr[0][1]);
        System.out.println(arr[1][0]);
cs

 

정답

3

1

45

50

89

해설

제공된 Java 코드는 2차원 정수 배열 arr을 초기화하고, 배열의 특정 요소들에 대한 정보를 출력합니다. arr 배열은 다음과 같이 정의되어 있습니다: 첫 번째 행에는 45, 50, 75가 있고, 두 번째 행에는 89만 있습니다.

  1. arr[0].length는 첫 번째 행의 길이, 즉 3을 출력합니다.
  2. arr[1].length는 두 번째 행의 길이, 즉 1을 출력합니다.
  3. arr[0][0]는 첫 번째 행의 첫 번째 요소, 즉 45를 출력합니다.
  4. arr[0][1]는 첫 번째 행의 두 번째 요소, 즉 50을 출력합니다.
  5. arr[1][0]는 두 번째 행의 첫 번째 요소, 즉 89를 출력합니다.

결과적으로

3

1

45

50

89

를 출력합니다.

 

2021 정보처리기사 실기 1회 15번

문제

15. 다음은 C언어 프로그램이다. 실행 결과를 쓰시오.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
struct good {
    char name[10];
    int age;
 };
 
 void main(){
     struct good s[] = {"Kim",28,"Lee",38,"Seo",50,"Park",35};
    
    struct good *p;
    p = s;
    p++;
    printf("%s\n", p-> name);
    printf("%d\n", p-> age);
cs

 

정답

Lee 38

해설

제공된 C 코드에서는 good이라는 구조체를 정의하고, 이 구조체의 배열을 초기화합니다. 각 구조체는 이름과 나이를 가지고 있습니다. 배열은 {"Kim", 28, "Lee", 38, "Seo", 50, "Park", 35}와 같이 초기화되었습니다.

p라는 포인터를 구조체 배열 s의 첫 번째 요소에 설정한 다음, p++를 통해 p를 다음 구조체로 이동시킵니다. 따라서 p는 배열의 두 번째 요소인 {"Lee", 38}를 가리키게 됩니다.

코드의 마지막 부분에서 p->name과 p->age를 출력합니다. 여기서 p->name은 p가 가리키는 구조체의 name 필드이고,

p->age는 age 필드입니다.

 

2021 정보처리기사 실기 1회 17번

문제

17. 다음은 Java 프로그램이다. 실행 결과를 쓰시오.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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("+");
    }
   }
  }
 }
cs

 

정답

0 + 1 + 2 + 3 + 4 + 5 = 15

해설

제공된 Java 코드는 두 개의 변수 i와 j를 사용하여 반복문을 수행하는 예제입니다. 여기서 i는 반복문의 카운터로 사용되며, j는 0부터 i까지의 합을 계산하는 데 사용됩니다. 코드의 주요 구조는 다음과 같습니다:

  1. 먼저, for 반복문을 사용하여 i와 j를 모두 0으로 초기화합니다. 이후 i는 반복문을 통해 1씩 증가되며, i <= 5인 동안 반복문이 실행됩니다. 이는 i가 0부터 5까지 변할 때까지 반복됨을 의미합니다.
  2. 반복문 내에서, j += i;는 j에 i의 현재 값을 더하여 j를 업데이트합니다. 이는 j가 이전 모든 i의 합을 가지게 만듭니다.
  3. System.out.print(i);는 현재 i의 값을 출력합니다.
  4. if 조건문을 사용하여 i가 5인지 검사합니다. 이 조건이 참일 경우, 즉 i가 5일 때, "="를 출력하고, j의 값을 출력하여 이전에 더한 숫자들의 총합을 보여줍니다. 조건이 거짓이면, 즉 i가 5보다 작을 때는 "+"를 출력하여 숫자들 사이를 연결합니다.

따라서 코드의 출력 결과는 다음과 같은 과정을 거치며 생성됩니다:

  • 첫 번째 반복에서, i는 0, j는 0입니다. 출력은 0+입니다.
  • 두 번째 반복에서, i는 1, j는 1입니다 (0 + 1). 출력은 1+입니다.
  • 세 번째 반복에서, i는 2, j는 3입니다 (1 + 2). 출력은 2+입니다.
  • 네 번째 반복에서, i는 3, j는 6입니다 (3 + 3). 출력은 3+입니다.
  • 다섯 번째 반복에서, i는 4, j는 10입니다 (6 + 4). 출력은 4+입니다.
  • 마지막으로, 여섯 번째 반복에서, i는 5, j는 15입니다 (10 + 5). 출력은 5=15입니다.

최종적으로, 전체 출력 결과는 0+1+2+3+4+5=15가 됩니다.