정보처리기사
스터디) 2023 정처기 실기 1회 프로그래밍 풀기
초비비
2024. 10. 11. 14:49
2023 정처기 실기 1회 정리
https://chobopark.tistory.com/372 문제 복원 블로그
문제1. static 변수, 지역 변수
class Static{
public int a = 20;
static int b = 0;
}
public class Main{
public static void main(String[] args) {
int a;
a = 10;
Static.b = a;
Static st = new Static();
System.out.println(Static.b++);
System.out.println(st.b);
System.out.println(a);
System.out.print(st.a);
}
}
더보기
10
11
10
20
- static : 단 한번 생성되어 공유되는 변수
- 변수가 참조하는 값의 가장 우선 순위는 자기 자신 블록 내에 있는 변수
문제2. 문자열, 포인터
#include <stdio.h>
int main(){
char a[] = "Art";
char* p = NULL;
p = a;
printf("%s\n", a);
printf("%c\n", *p);
printf("%c\n", *a);
printf("%s\n", p);
for(int i = 0; a[i] != '\0'; i++)
printf("%c", a[i]);
}
더보기
Art
A
A
Art
Art
- char a[], char* p : 문자열을 저장하기 위해 선언한 변수
- p = a; : a를 단독으로 사용하면 배열의 첫 번째 주소 값을 저장
- C언어에서 문자열을 저장하는 방법
- 문자형 배열 이용
- 포인터를 이용하여 문자열 저장
문제3. 문자열, 포인터
#include <stdio.h>
int main(){
char* a = "qwer";
char* b = "qwtety";
for(int i = 0; a[i] != '\0' ; i++){
for(int j = 0; b[j] != '\0'; j++){
if(a[i] == b[j]) printf("%c", a[i]);
}
}
}
더보기
qwe
- for(int i = 0; a[i] != '\0' ; i++) : 문자열 a를 기준으로 문자열 b를 비교
문제4. 2진수 → 10진수 변환 알고리즘
#include <stdio.h>
int main() {
int input = 101110;
int di = 1;
int sum = 0;
while (1) {
if (input == 0) break
else {
sum = sum + (input (a)(b)) * di;
di = di * 2;
input = input / 10;
}
}
printf("%d", sum);
return 0;
}
더보기
1. (a) % ,(b) 10 or 5 or 2
2. (a) & ,(b) 1
- di : 2진수 자리 수
문제5. 정렬 프로그램
public class Sort {
public static void swap(int[] arr, int idx1, int idx2){
int temp = arr[idx1];
arr[idx1] = arr[idx2];
arr[( 1 )] = temp;
}
public static void Usort(int[] array, int length){
for (int i = 0; i < length; i++) {
for (int j = 0; j < length - i - 1; j++) {
if (array[j] > array[j + 1]) {
swap(array, j, j + 1);
}
}
}
}
public static void main(String[] args) {
int[] item = new int[] { 5, 3, 8, 1, 2, 7 };
int nx = 6;
Usort(item, ( 2 ));
for (int data : item) {
System.out.print(data + " ");
}
}
}
출력 값 : 1 2 3 5 7 8
더보기
idx2, nx
- 버블 정렬
- Usort() : 배열의 크기 만큼 값 비교(실행), 정렬
문제6. 집합
a = {'한국', '중국', '일본'}
a.add('베트남')
a.add('중국')
a.remove('일본')
a.update({'홍콩', '한국', '태국'})
print(a)
더보기
{'한국', '중국', '베트남', '홍콩', '태국'}
- 특징 : 순서가 없고 중복이 불가능
문제7. 추상클래스, 오버로딩
abstact class Vehicle {
String name;
abstract public String getName(String val);
public String getName() {
return "Vehicle name: " + name;
}
}
class Car extends Vehicle {
public Car(String val) {
name=super.name=val;
}
public String getName(String val) {
return "Car name:" + val;
}
public String getName(byte val[]) {
return "Car name:" + val;
}
}
public class Main {
public static void main(String[] args) {
Vehicle obj = new Car("Spark");
System.out.println(obj.getName());
}
}
더보기
Vehicle name: Spark
- 추상 클래스 : 미완성 설계도
- 클래스 들의 공통되는 필드와 메소드를 정의한 구체적이지 않은 클래스
- 상위 클래스에는 메소드의 시그니처만 정의해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속받은 하위 클래스가 책임을 짐
- 특징 : 1. 객체 생성X , 2. 추상 클래스와 실체 클래스는 상속 관계를 가짐
문제8. 상속, 생성자
class Parent {
int x = 100;
Parent() {
this(500);
}
Parent(int x) {
this.x = x;
}
int getX() {
return x;
}
}
class Child extends Parent {
int x = 4000;
Child() {
this(5000);
}
Child(int x) {
this.x = x;
}
}
public class Main {
public static void main(String[] args) {
Child obj = new Child();
System.out.println(obj.getX());
}
}
더보기
500
- 생성자 : 객체 생성 시 초기화 작업을 위한 일종의 함수
- 객체가 처음 생성될 때 반드시 호출되고 제일 먼저 실행 됨
- 반드시 클래스 명과 동일하게 정의해야하며, 반환 값이 X
- 상속 관계에서 하위(자식, 서브) 객체 생성(생성자) 하면 상위(부모, 슈퍼) 객체도 생성(생성자) 된다.
📀 유튜브 문제 해설