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

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

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

<<틀리기 쉬운 문제>>

자바문제

 

클래스 배열

메인함수

int[]a = new int[]{1,2,3,4} //new를 써서 배열 객체를 만들었다.

int[]b = new int[]{1,2,3,4}

int[]c = new int[]{1,2,3}

 

if문 a==b //new가 있어서 메모리 주소가 서로 다름. 

 

if문 a==c //new가 있어서 주소가 서로 다름. 

 

if문 b==c //new가 있어서 주소가 서로 다름. 

 

정답:

NNN


클래스 배열

메인 함수

int[]a = new int[]{1,2,3,4} //new를 써서 배열 객체를 만들었다.

int[]b = new int[]{1,2,3,4}

int[]c = new int[]{1,2,3}

 

if(배열 객체 변수명.equals(a,b)) //equals는 값이 같은 지 물어보는 것임. 같음.

 

if(배열 객체 변수명 .equals(a,c))

 

if(배열 객체 변수명 .equals(b,c))

 

정답:

a and b are equal.

a and c are not equal.

b and c are not equal.


<<틀리기 쉬운 문제>> c언어 문제. 다차원 배열

 

메인 함수

int 배열[3][3]={1,2,3,4,5,6,7,8,9}

  [0] [1] [2]
[0] 1 2 3
[1] 4 5 6
[2] 7 8 9

 

int*p[2] //2행배열

  [0][1][2]
[0] 4,5,6
[1] 7,8,9

p[0]=배열[1]  //배열1행 4,5,6을 p 0행에 넣어라.

p[1]=배열[2]

 

int 결과 = p[1][1] +*(p[1]+2)+**p //8+9+4=21 //**p=*p[0]

%d\n, result

 

정답:21


c언어.

 

스왑 함수

a=11

b=19

temp  //빈 거

 

tem=a

a=b

b=a  //a랑 b랑 자리바꾸기

 

메인 함수

a=11

b=19

스왑 함수 호출. //a=19, b=11 //스왑함수 안에서만 살아있는 변수임. 지역변수!!!!!!!! 메인함수에 가면 상관없어져.

 

스위치문(a) // 여기서 메인함수 변수 a 값을 가져올건지 스왑함수 a를 가져와야 하는 지 헷갈림. 지역변수라서 메인함수에 적힌 변수 써야함!!!!!!!!!!!

 

케이스 11 b=b+2=19+2=21

디폴트 b=b+3=21+3=24

브레이크

 

%d, a-b=11-24=-13

 

정답:

-13


파이썬

 

def k(str, 3)

result=str.split('T') //스플릿 함수 등장. T를 기준으로 자른다. T는 없어짐.

 

str="ITISTESTSTRING" // ITISTESTSTRING

 

print("실제로 잘린 값: ", end="")  // end="" 이거는 파이썬에서 개행 방지용 문구임.

실제로 잘린 값: ['I', 'IS', 'ES', 'S', 'RING'] //리스트 형태.

 

정답:

S


c언어 구조체 문제

 

구조체 node

int n1

struct node*n2 //구조체 node의 주소를 담는 포인터 변수n2

n1 *n2

 

메인함수

struct node a={10, NULL(&b)}

struct node b={20, NULL(&c)}

struct node c={30, NULL}

 

struct node*head //node형태의 포인터변수 head 선언.

head = &a

 

a.n2 = &b 

b.n2 = &c

 

%d\n, head->n2->n1 //a의 주소. a의 n2. b의 주소. b의 n1

 

정답:

20


자바문제. 킬러문제

 

클래스 W

static string c(string str, int i=7, boolean[]seen)

if문(i<0) return""

char c =str.charAt(i) //해당 인덱스에 있는 문자를 반환하여 c로 저장하라. str.charAt(7)은 d.

 

string result = c(str, i-1, seen) //재귀함수.

c(str, 6, seen) str.charAt(7)은 d.

c(str, 6, seen) str.charAt(6)은 c.

c(str, 5, seen) str.charAt(5)은 b.

c(str, 4, seen) str.charAt(4)은 a.

c(str, 3, seen) str.charAt(3)은 c.

c(str, 2, seen) str.charAt(2)은 a.

c(str, 1, seen) str.charAt(1)은 b.

c(str, 0, seen) str.charAt(0)은 a.

c(str, -1, seen) str.charAt(-1)은 return"" //빈 문자열 반환함.

 

if문 (!seen[c]) //불린 값이 초기에는 다 false 니까 !false 하면 참이 됨. 

seen[c]=ture //false 엿던 걸 true로 바꿔줌. 이러면 다음에 같은 문자가 오면 true 있어서 if문 실행 안함!

result =c+result //result = a+""

seen[c] result
seen[a] a
b ba
a  
c cba
a  
b  
c  
d dcba

 

메인함수

string str = "abacabcd"

a b a c a b c d \n
[0] [1] [2] [3] [4] [5] [6] [7] [8]

int length = str.length() //길이 8.

boolean[]seen= new boolean[256] //변수 seen 배열. 불린 값은 초기값이 false로 시작함. [0]부터 [255]까지 false로 채워짐. 

 

string result = c(str, length-1, seen) //함수 호출.

 

정답:

dcba


자바 문제

 

인터페이스 N

int sum(int[]n, boolean odd) //배열 변수 n, 불린값 변수 odd

 

클래스 O implements(상속) N

public int sum(int[] n, boolean odd)

int sum=0

for문 i=0; i<n.length=9; i++

if문 (odd && n[i]%2 != 0) 또는 (!odd && n[i]%2==0) //하나라도 참이 되면 된다.

참이면 sum=sum+n[i]

odd n[i]%2 != 0 ! odd n[i]%2==0 sum=sum+n[i]
true n[0]%2 != 0 참     0+1=1
ture n[1]%2 != 0 false    
true n[2]%2 != 0     1+3=4
        4+5=9
        9+7=16
        16+9=25
false   true n[0]%2==0  
    ture n[1]%2==0 0+2=2
        2+4=6
        6+6=12
        12+8=20

 

클래스 메인

int[] n ={1,2,3,4,5,6,7,8,9}

 

N numbersum = new O () //업캐스팅.

 

int odd토탈= numbersum.sum(n, true) //sum 함수 호출. 홀수값 더하기.

int even토탈= numbersum.sum(n, false) //sum 함수 호출. 짝수값 더하기.

 

정답:

Odd Sum: 25

Even Sum: 20


자바의 람다함수

이름이 없는 함수라고 함. 람다람다~~이름없는 다람쥥

 인터페이스에 쓰기 좋대.

 


C언어

 

복사(char d[], const char s[])  //s2, s1 받앙

int i=0

 

while(s[i] != '\0')  //참인동안 실행합니다.

d[i] = s[i]

i++

 

d[i]='\0' //while 다 끝나고 실행. d[5]=\0

 

메인 함수

char s1[] = "first" //문자열 변수 s1 선언.

f i r s t \0
[0] [1] [2] [3] [4] [5]

char s2[50] = "teststring"

int result = 0

 

복사(s2, s1) //함수 호출.

 

for문 i=0; s2[i] != '\0'; i++

result= result+i

0+0+1+2+3+4=10

 

%d, result

 

정답:

10

 

s2 전체 출력하면

first ring 이라구함. 띄어쓰기는 \0임. 어디 다른 유투브 동영상에서는 문자열 뒤에 널값이 들어가면 뒤에꺼 자동으로 삭제된다고 그랬는데 누가 맞는건지 모르겠다.


파이썬 문제

 

def 씨(s, sub) // 씨(a,p1) 받앙.

cnt=0

for문 i in range(len(s)-len(sub)+1) //12-2+1=11 //i는 0부터 10까지 돈다.

if문 s[i:i+len(sub)] == sub

참이면 cnt=cnt+1

return cnt

    cnt=cnt+1
s[0:2] ab 0+1=1
s[1:3] bd  
s[2:4    
s[3:5    
s[4:6   1+1=2
s[5:7    
s[6:8    
s[7:9    
s[8:10   2+1=3
s[9:11    
s[10:12    

 

a="abdcabcaabca" #길이 12

  a b d c a b c a a b c a \0
  [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
s[0:2] a b                      
s[1:3]   b d                    
s[2:4     d c                  
s[3:5       c a                
s[4:6         a b              
s[5:7           b c            
s[6:8             c a          
s[7:9               a a        
s[8:10                 a b      
s[9:11                   b c    
s[10:12                     c a  

p1= "ab"

p2= "ca"

 

out=f "ab{씨(a,p1)}ca{씨(a,p2)}" //함수호출. //f스트링 문제!!! 문자열 앞에 f를 넣어줌. 출력할 변수를 중괄호{}에 넣기.

 

정답:

ab3ca3

 


 

반응형

댓글