2023 정처기 실기 2회 정리
https://chobopark.tistory.com/420 문제 복원 블로그
문제1. 1차원 배열 로테이션
int main(void) {
int n[5];
int i;
for (i = 0; i < 5; i++) {
printf("숫자를 입력해주세요 : ");
scanf("%d", &n[i]);
}
for (i = 0; i < 5; i++) {
printf("%d", ( ) );
}
return 0;
}
입력값이 54321일 경우 출력값이 43215로 출력되어야 한다.
더보기
n[(i+1) % 5]
- 범위를 벗어나지 않기 위해 나머지 연산자(%) 이용
문제2. 처리조건 주의
public class Problem{
public static void main(String[] args){
m = 4620;
a = ( );
b = ( );
c = ( );
d = ( );
System.out.println(a); //천원짜리 4장 출력
System.out.println(b); //오백원짜리 1개 출력
System.out.println(c); //백원짜리 1개 출력
System.out.println(d); //십원짜리 2개 출력
}
}
더보기
m / 1000
(m % 1000) / 500
(m % 500) / 100
(m % 100) / 10
- 처리 조건
- a+b+c+d 최소 값
- 최소 길이
문제3. 문자열 포인터
#include<stdlio.h>
#include<stdlib.h>
char n[30];
char *test() {
printf(입력하세요 : );
gets(n);
return n;
}
int main(){
char * test1;
char * test2;
char * test3;
test1 = test();
test2 = test();
test3 = test();
printf(%s\n,test1);
printf(%s\n,test2);
printf(%s,test3);
}
더보기
박영희
박영희
박영희
- char n[30]; : 전역변수
- return n; : n 단독 사용 : 주소값 (전역 변수 시작 주소) : ex) 10번지
- char * test1; : C언어는 포인터를 이용하여 문자열 저장
- 10번지 위치로 가서 문자열에 접근 : 문자열 끝을 만날 때 까지
문제4. Switch~Case문
int n[3] = [73, 95, 82]
sum = 0
for(i=0;i<3;i++){
sum += n[i];
}
switch(sum/30){
case 10:
case 9: printf("A");
case 8: printf("B");
case 7:
case 6: printf("C");
default: printf("D");
}
더보기
BCD
- break문이 없어서 종료될 때까지 모든 문장 실행
문제5.
#include <stdio.h>
int main(){
int c = 0;
for(int i = 1; i <=2023; i++) {
if(i%4 == 0) c++;
}
printf("%d", c);
}
더보기
505
- if(i%4 == 0) : 4의 배수
문제6. 스택
#include <stdio.h>
#define MAX_SIZE 10
int isWhat[MAX_SIZE];
int point= -1;
void into(int num) {
if (point >= 10) printf("Full");
isWhat[++point] = num;
}
int take() {
if (isEmpty() == 1) printf("Empty");
return isWhat[point--];
}
int isEmpty() {
if (point == -1) return 1;
return 0;
}
int isFull() {
if (point == 10) return 1;
return 0;
}
int main(int argc, char const *argv[]){
int e;
into(5); into(2);
while(!isEmpty()){
printf("%d", take());
into(4); into(1); printf("%d", take());
into(3); printf("%d", take()); printf("%d", take());
into(6); printf("%d", take()); printf("%d", take());
}
return 0;
}
더보기
213465
- 스택(Stack) : 리스트의 한 쪽으로만 삽입, 삭제가 이루어지는 후입선출(LIFO) 형식의 자료구조
- int isWhat[MAX_SIZE]; : 함수 외부에 선언 전역 변수
- ++point : 선 증가 후 사용
- point-- : 선 사용 후 감소
- void into(int num) : 삽입 함수
- int take() : 출력 함수
문제7. 문자열
public class Main{
public static void main(String[] args) {
String str1 = 'Programming';
String str2 = 'Programming';
String str3 = new String('Programming');
println(str1==str2)
println(str1==str3)
println(str1.equals(str3))
print(str2.equals(str3))
}
}
더보기
true
false
true
true
- 문자열 선언 방식
- 1. 리터럴 방식 : 문자열 변수에 값을 바로 저장
- String Constant Pool에 값이 저장
- String Constant Pool에 동일한 값이 미리 저장되어 있다면 그 주소 값을 함께 참조
- 2. new 연산자로 객체 생성 후 문자열 대입 방식
- 별도 메모리에 저장
- 1. 리터럴 방식 : 문자열 변수에 값을 바로 저장
- == : 참조 주소 비교, equals() : 값을 비교
- 프로그래밍 언어는 대소문자 구분 함! 따라서, JAVA언어에서 소문자로 true, false로 출력.
문제8. 선택정렬
#include
int main() {
int E[] = {64, 25, 12, 22, 11};
int n = sizeof(E) / sizeof(E[0]);
int i = 0;
do {
int j = i + 1;
do {
if (E[i] ( ) E[j]) {
int tmp = E[i];
E[i] = E[j];
E[j] = tmp;
}
j++;
} while (j < n);
i++;
} while (i < n-1);
for(int i=0; i<=4; i++)
printf("%d ", E[i]);
}
보기 : <, <=, =>, >, ==, /, %
더보기
>
- 선택정렬 : 위치를 지정해서 해당 위치에 들어갈 수를 선택하여 정렬
- sizeof() : 데이터 타입의 크기 반환
- int : 4byte
- 주의 : 오름 차순 : > , 내림 차순 : <
문제9. 문자열 슬라이싱
a = "engineer information processing"
b = a[:3]
c = a[4:6]
d = a[28:]
e=b+c+d
print(e)
더보기
engneing
- [시작인덱스 : 끝인덱스 : 증감값]
- 시작 인덱스 부터 끝 인덱스-1까지 증감하며 슬라이싱
📀 유튜브 문제 해설