본문 바로가기
정보처리기사 필답 실기. 코딩 문제.

정처기 24년 3회 코드 기출문제

by 귀엽소 2025. 5. 15.
반응형

파이썬 문제

 

def f(lst)

for문 i in range(len(lst)//2)  #// 연산자는 정수 형태만 나와라 뿅. 6//2=3, i=0부터 2까지 반복.

lst[i],lst[-i-1] = lst[-i-1], lst[i]

#lst[0],lst[-1] = lst[-1],lst[0]  #[6,2,3,4,5,1]

#lst[1],lst[-2] = lst[-2], lst[1]  #[6,5,3,4,2,1]

#lst[2],lst[-3] = lst[-3], lst[2]  #[6,5,4,3,2,1]

 

 

lst=[1,2,3,4,5,6]

[0] [1] [2] [3] [4] [5]
1 2 3 4 5 6
[-6] [-5] [-4] [-3] [-2] [-1]

f(lst) #함수 호출.

sum(lst[::2]-sum(lst[1::2])  #[시작:끝:스텝] #[6,5,4,3,2,1] # lst[::2] =[6,4,2] , lst[1::2]=[5,3,1] #12-9=3

 

정답:

3


<<틀리기 쉬운 문제>>

def f(value)

if type(value) == type(100)  #정수형 int 형태랑 같냐?

return 100

elif type(value) == type("")  #문자열 형태랑 같냐?

return len(value)

else

return 20

 

a='100.0' #문자열 형태, str

b=100.0 #실수 형태!!!!! int 형태가 아님!!!!! 100이 int 형태임.

c=(100,200) #튜플

 

f(a)+f(b)+f(c)  #5+20+20=45

 

정답: 

45


자바 문제

 

클래스 메인

static string[]s =new string[3]

[0] [1] [2]
A A A

static void f(string[]s, int size)

for문 i=1; i<3; i++

if문 s[i-1].equals(s[i]) //값이 같은 지 물어봄. s[0].equals(s[1])=참, s[1].equals(s[2])=참

참이면 system.out.print("O")

else

거짓이면 ("N")

 

for(string m : s)  //향상된 for문. for (데이터 타입 변수명 : 배열)

system.out.print(m)

 

메인 함수

s[0]="A"

s[1]="A"

s[2] = new string("A")

 

f(s,3) //함수호출.

 

정답:

OOAAA


자바문제

 

클래스 부모

int x = 3

int get()

return x*2

 

클래스 자식 상속 부모

int x=7

int getx()  //재정의

return x*3

 

클래스 메인

부모 a = new 자식()  //업캐스팅.

자식 b = new 자식()

 

a.getx()+a.x+b.get()+b.x=21 //자식에서 재정의한 함수 적용해야함. 자식이 부모 상속했으니까. +3+21+7=

6+3+21+7

 

정답:

52


c언어 문제. 이중포인터. 

 

f(int**arr, int size)  //pp, 5 받음.

for문

i=0; i<5; i++

*(*arr+i) = (*(*arr+i)+i) % 5  // *(*pp+1) , *pp는 p이다!!!!! *(*pp+1) =*(p+1)

*(*pp+0) = (*(*pp+0)+0) % 5 3 %5 3
*(*pp+1) = (*(*pp+1)+1) % 5 2 %5 2
*(*pp+2) = (*(*pp+2)+2) % 5 6 %5 1
*(*pp+3) = (*(*pp+3)+3) % 5 4 %5 4
*(*pp+4) = (*(*pp+4)+4) % 5 9 %5 4

 

메인함수

int arr[]={3,1,4,1,5}

3 1 4 1 5
[0] [1] [2] [3] [4]
arr[0]        
p p+1      

int*p = arr //arr 배열을 가리키는 포인터 p. p는 arr[0]의 주소를 가리킨다. *p는 arr[0]의 값인 3이다.

int**pp = &p //포인터 p의 주소(arr[0]의 주소)를 가리키는 포인터의 포인터. 이중포인터. **pp는 결국 arr[0]의 값인 3이다. 

int num = 6 

 

f(pp,5)

num = arr[2]

%d, num

 

정답:

1


자바문제. try- catch- finally문.

 

클래스 이

메인함수

int sum = 0

 

try문

f()

catch(널포인터예외 e)

sum=sum+1  //1

catch(예외 e)

sum=sum+10

finally //무조건 파이널리도 실행시킨다. 

sum=sum+100 //101

 

f()

throw new 널포인터예외   //throw는 강제로 에러를 발생시킨다.

 

정답:

101


<<틀리기 쉬운 문제>>

자바 문제. 킬러 문제. 제네릭

 

클래스 프린터

print(integer a)

print(object a)

system.out.print("B"+a) //B0

print(number a) 

//오버로딩

 

클래스 메인

new 컨테이너<>(0).print()  //컨테이너라는 제네릭 클래스를 사용해서 0을 전달함. (매개변수 0). 함수명()

 

public static 클래스 컨테이너<T> 

T value //타입을 정하지 않고 T로 함. integer로 타입 정한다고 하면 integer value 라고 씀.

public 컨테이너(Tt) //인티저로 하고 싶으면 (integer t) 라고 적으면 됨.

value = t

print()

new 프린터().print(value) //0은 int에 해당. 하지만...제네릭 타입으로 들어가면 타입이 사라짐. 개어렵

 

정답:

B0


구조체 사람

char*name //문자열 가리키는 포인터 변수 name.

int age

name age

 

메인함수

구조체 사람 p = {"철이", 20} //p라는 변수. 

구조체 사람 *ptr= &p  //구조체 p의 메모리 주소를 포인터 변수 ptr이 가리킬수 잇다.

 

%\n, ptr ->name  //(*ptr).name 과 같은 말. ptr 포인터로 접근하려면 -> 사용해야함.

%d\n, ptr ->age

 

정답:

철이

20


c언어 문제. 구조체 문제.

 

구조체 노드

int value  //정수형 변수.

구조체 노드 *next  //구조체 노드를 가리키는 포인터 변수 next.

 

f(구조체 노드 *노드) //n1의 주소를 노드가 받음. 

while문 (노드 != 널 && 노드 -> next != 널)  //둘 다 참이어야 while문 실행.  //n2의 next는 널이라 거짓.

int t = node -> value  //t=1 

node -> value = node -> next -> value  //3

node -> next -> value =t  //1

node = node -> next ->next //n2의 주소

 

메인함수

구조체 노드 n1 = {1, 널}

구조체 노드 n2 = {2, 널}

구조체 노드 n3 = {3, 널}

1 &n3
3  
2
3 &n2
1  

 

n1.next = &n3

n3.next = &n2

 

f(&n1)

 

구조체 노드 *current = &n1

 

while문 current != 널   /참인동안 실행.

%d, current->value

current= current -> next

 

 

정답:

312


 

반응형

댓글