250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 리눅스명령어
- 기사자격증
- 자격증
- 정보처리기사실기
- Linux
- 정보처리기사기출
- Django
- python
- IT자격증
- 웹개발
- 정처기실기
- 리눅스자격증
- 파이썬
- 공부블로그
- 코딩
- SW
- 리눅스활용
- IT
- 프로그래밍
- 정처기기출
- 장고
- Java
- C
- 머신러닝
- 정처기
- 리눅스마스터2급
- 리눅스
- 리눅스마스터2급2차
- 리눅스마스터
- 정보처리기사
Archives
- Today
- Total
Tech Trail
[정보처리기사 실기] 2021년 1회 기출 코드 해설 (C언어, Java, Python) 본문
728x90
반응형
SMALL
2021년 1회 5번 문제
다음은 파이썬 코드이다. 출력 결과를 쓰시오.
class Soojebi:
li= ["Seoul", "Kyeonggi", "Inchon",
"Daejeon", "Daegu", "Pusan"]
s = Soojebi()
str01 = ' '
for i in s.li:
str01 = str01 + i[0]
print(str01)
- 클래스 Soojebi를 생성하였습니다. 이 클래스 안에는 li라는 이름의 리스트가 초기화되어 있습니다.
- 그런 다음 for 루프를 사용하여 s.li 리스트의 각 요소를 하나씩 i에 할당합니다.
- 처음으로 나오는 요소는 "Seoul"이므로 i에 "Seoul"이 할당됩니다. i에 "Seoul"이 할당될 때, str01이라는 문자열 변수에 i[0] 즉, 첫 번째 문자 "S"가 추가됩니다. 이때 str01은 아무 문자도 포함하지 않는 빈 문자열입니다.
- 다음으로는 "Kyeonggi"가 나오며, i에 "Kyeonggi"가 할당됩니다. i에 "Kyeonggi"가 할당될 때, i[0] 즉, 첫 번째 문자 "K"가 str01에 추가됩니다. str01은 이제 "SK"입니다.
- 다시 올라가서 3번째 요소 "Inchon"이 i에 할당되며, i[0] 즉, 첫 번째 문자 "I"가 str01에 추가됩니다. str01은 "SKI"입니다.
- 이어서 4번째 요소 "Daejeon"이 i에 할당되고, i[0] 즉, 첫 번째 문자 "D"가 str01에 추가됩니다. str01은 "SKID"입니다.
- 그 다음으로 5번째 요소 "Daegu"가 i에 할당되고, i[0] 즉, 첫 번째 문자 "D"가 str01에 추가됩니다. str01은 "SKIDD"입니다.
- 마지막으로 6번째 요소 "Pusan"이 i에 할당되며, i[0] 즉, 첫 번째 문자 "P"가 str01에 추가됩니다. str01은 최종적으로 "SKIDDP"가 됩니다.
- 즉, str01 변수에는 "SKIDDP"라는 문자열이 저장되고, 이 문자열이 마지막에 출력됩니다.
<출력>
SKIDDP
<참고> 코드에서 str01에 문자들을 계속 추가하다가 for 루프가 종료된 후 print(str01)을 호출하면 str01에 누적된 문자열이 출력됩니다. 따라서 str01을 출력할 때 이미 줄 바꿈이 필요하지 않습니다.
이때 만약 줄 바꿈을 추가하려면 print(str01) 대신 print(str01, end='\n')과 같이 end 매개변수에 줄 바꿈 문자를 지정해야 합니다.
2021년 1회 7번 문제
다음은 Java 프로그램 결과를 쓰시오.
public class Soojebi {
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]);
}
}
2차원 배열이며 다음과 같이 구성됩니다.
0열 1열 2열
0행 45 50 75
1행 89
- System.out.println(arr[0].length);: 0행의 길이를 출력하는 구문입니다. 0행에는 3개의 열이 있으므로 결과는 3이 됩니다. 그리고 Enter.
- System.out.println(arr[1].length);: 1행의 길이를 출력하는 구문입니다. 1행에는 1개의 열만 있으므로 결과는 1이 됩니다. 그리고 Enter.
- System.out.println(arr[0][0]);: 0행 0열의 값을 출력하는 구문입니다. 0행 0열에는 45가 있으므로 결과는 45가 됩니다. 그리고 Enter.
- System.out.println(arr[0][1]);: 0행 1열의 값을 출력하는 구문입니다. 0행 1열에는 50이 있으므로 결과는 50이 됩니다. 그리고 Enter.
- System.out.println(arr[1][0]);: 1행 0열의 값을 출력하는 구문입니다. 1행 0열에는 89가 있으므로 결과는 89가 됩니다.
2021년 1회 15번 문제
다음은 C언어 프로그램이다. 실행 결과를 쓰시오.
#include <stdio.h>
struct Soojebi {
char name[10];
int age;
};
void main() {
struct Soojebi s[] = {"Kim", 28, "Lee", 38,
"See", 50, "Park", 35};
struct Soojebi *p;
p = s;
p++;
printf("%s\n", p->name);
printf("%d\n", p->age);
}
- struct Soojebi라는 사용자 정의 데이터 타입(구조체)을 정의합니다. 구조체는 여러 가지 데이터 형식을 하나로 묶어서 사용자 정의 데이터 타입을 생성하는 데 사용됩니다. 이 구조체에는 두 개의 멤버 변수인 name (문자열)과 age (정수)가 포함되어 있습니다. 이러한 구조체를 사용하여 이름과 나이 정보를 하나로 묶을 수 있습니다.
- main 함수에서 Soojebi 구조체 배열인 s를 선언하고 초기화합니다. 이 두 변수를 활용하여 배열인 's'에 데이터를 두 개씩 집어넣었습니다. 예를 들어, s 배열의 0번 인덱스에 "Kim"과 28이, 1번 인덱스에 "Lee"와 38이 초기화되어 있습니다.
- 포인터 변수 p를 선언하고, 이를 배열 s의 시작 주소로 초기화합니다. 따라서 p는 현재 배열 s의 첫 번째 요소를 가리킵니다.
- p++ 연산을 통해 포인터 p를 다음 요소로 이동시킵니다. 이로써 p는 현재 배열 s에서 두 번째 요소를 가리키게 됩니다.
- printf 함수를 사용하여 현재 p가 가리키는 구조체의 name (문자열)과 age (정수)를 출력합니다. 이로써 두 번째 요소인 "Lee"와 38이 출력됩니다.
<출력>
Lee
38
2021년 1회 17번 문제
다음은 Java 프로그램이다. 실행 결과를 쓰시오.
public class Soojebi {
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("+");
}
}
}
}
1. i의 초기 값은 0이며, i가 5 이하인 동안 다음을 실행합니다.
- i <= 5에서 현재 i는 0이므로 조건은 참입니다.
- 그런 다음 j에 현재 j 값에 i를 추가한 값을 할당합니다. 결과적으로 j는 0 + 0 = 0이 됩니다.
- System.out.print(i);를 호출하면 0이 출력됩니다. 이때 print 메서드를 사용하여 변수 i의 값을 출력하기 때문에 줄바꿈이 되지 않습니다. 줄 바꿈 문자를 출력하려면 System.out.println(i);와 같이 print 메서드 대신 println 메서드를 사용해야 합니다. (참고)
- if 문에서 현재 i는 0이므로 i == 5는 거짓입니다. 따라서 if 블록이 실행되지 않고, else 블록이 실행되어 +가 출력됩니다. 따라서 현재까지의 출력은 "0+"입니다.
2. 다음으로 i를 증가시켜 i는 1이 됩니다.
- i <= 5에서 현재 i는 1이므로 조건은 참입니다.
- 그런 다음 j에 현재 j 값에 i를 추가한 값을 할당합니다. 결과적으로 j는 0 + 1 = 1이 됩니다.
- System.out.print(i);를 호출하면 1이 출력됩니다. 이때, 줄 바꿈이 되지 않고 현재 줄에 출력됩니다.
- if 문에서 현재 i는 1이므로 i == 5는 거짓입니다. 따라서 if 블록이 실행되지 않고, else 블록이 실행되어 +가 추가로 출력됩니다. 따라서 현재까지의 출력은 "0+1+"입니다.
3. 다음으로 i를 증가시켜 i는 2가 됩니다.
- i <= 5에서 현재 i는 2이므로 조건은 참입니다.
- 그런 다음 j에 현재 j 값에 i를 추가한 값을 할당합니다. 결과적으로 j는 1 + 2 = 3이 됩니다.
- System.out.print(i);를 호출하면 2이 출력됩니다.
- if 문에서 현재 i는 2이므로 i == 5는 거짓입니다. 따라서 if 블록이 실행되지 않고, else 블록이 실행되어 +가 추가로 출력됩니다. 따라서 현재까지의 출력은 "0+1+2+"입니다.
4. 다음으로 i를 증가시켜 i는 3이 됩니다.
- i <= 5에서 현재 i는 3이므로 조건은 참입니다.
- 그런 다음 j에 현재 j 값에 i를 추가한 값을 할당합니다. 결과적으로 j는 3 + 3 = 6이 됩니다.
- System.out.print(i);를 호출하면 3이 출력됩니다.
- if 문에서 현재 i는 3이므로 i == 5는 거짓입니다. 따라서 if 블록이 실행되지 않고, else 블록이 실행되어 +가 추가로 출력됩니다. 따라서 현재까지의 출력은 "0+1+2+3+"입니다.
5. 다음으로 i를 증가시켜 i는 4가 됩니다.
- i <= 5에서 현재 i는 4이므로 조건은 참입니다.
- 그런 다음 j에 현재 j 값에 i를 추가한 값을 할당합니다. 결과적으로 j는 6 + 4 = 10이 됩니다.
- System.out.print(i);를 호출하면 4이 출력됩니다.
- if 문에서 현재 i는 4이므로 i == 5는 거짓입니다. 따라서 if 블록이 실행되지 않고, else 블록이 실행되어 +가 추가로 출력됩니다. 따라서 현재까지의 출력은 "0+1+2+3+4+"입니다.
6. 다음으로 i를 증가시켜 i는 5가 됩니다.
- i <= 5에서 현재 i는 5이므로 조건은 참입니다.
- 그런 다음 j에 현재 j 값에 i를 추가한 값을 할당합니다. 결과적으로 j는 10 + 5 = 15가 됩니다.
- System.out.print(i);를 호출하면 5가 출력됩니다.
- if 문에서 현재 i는 5이므로 i == 5는 참이므로 "="가 출력됩니다. 현재까지의 출력은 "0+1+2+3+4+5="입니다.
- 마지막으로 j의 최종 값을 출력하기 위해 System.out.print(j);를 호출합니다. j는 모든 루프 반복에서 i 값과 누적되어 0 + 1 + 2 + 3 + 4 + 5 = 15가 됩니다. 따라서 최종 출력은 "0+1+2+3+4+5=15"가 됩니다.
<출력>
0+1+2+3+4+5=15
728x90
반응형
LIST
'IT Learning > 정보처리기사' 카테고리의 다른 글
[정보처리기사 실기] 2021년 3회 기출 코드 해설 (C언어, Java, Python) (0) | 2023.11.16 |
---|---|
[정보처리기사 실기] 2021년 2회 기출 코드 해설 (C언어, Java, Python) (0) | 2023.11.16 |
[정보처리기사 실기] 2020년 3회, 4회 기출 코드 해설 (C언어, Java, Python) (0) | 2023.11.10 |
[정보처리기사 실기] 2020년 1회, 2회 기출 코드 해설 (C언어, Java, Python) (0) | 2023.11.10 |
[정보처리기사 실기] 2022년 3회 기출 단답 점검 테스트 (0) | 2023.11.10 |