2023 정처기 실기 3회 정리
https://chobopark.tistory.com/453 문제 복원 블로그
문제1. 상속, 오버라이딩
public class main{
public static void main(String[] args) {
A b = new B();
b.paint();
b.draw();
}
}
class A {
public void paint() {
System.out.print("A");
draw();
}
public void draw() {
System.out.print("B");
draw();
}
}
class B extends A {
public void paint() {
super.draw();
System.out.print("C");
this.draw();
}
public void draw() {
System.out.print("D");
}
}
더보기
BDCDD
문제2. 완전수
#include <stdio.h>
int test(int n) {
int i, sum = 0;
for (i = 1; i <= n / 2; i++){
if (n % i == 0)
sum += i;
}
if (n == sum)
return 1;
return 0;
}
int main(){
int i, sum=0;
for (i = 2; i <= 100; i++){
if (test(i))
sum += i;
}
printf("%d ", sum);
return 0;
}
더보기
34
- 완전수 : 자기 자신을 제외한 약수의 합이 자기 자신이 되는 수
- int test(int n) : 완전수 판별
- if (n % i == 0) : 약수 인가?
- 6, 28, 496, 8128 만 기억하기!
문제3. 구조체 포인터
#include <stdio.h>
#include <stdlib.h>
typedef struct Data{
char c;
int *numPtr;
} Data;
int main(){
int num = 10;
Data d1;
Data *d2 = malloc(sizeof(struct Data));
d1.numPtr = #
d2 ( ) numPtr = #
printf("%d\n", *d1.numPtr);
printf("%d\n", *d2 ( ) numPtr);
free(d2);
return 0;
}
출력결과
10
10
더보기
→
- 화살표 연산자(->) : 구조체 포인터 변수가 구조체 멤버에 접근할 때 사용하는 연산자
문제4. 재귀함수(7팩토리얼 = 7!)
#include
int f(int n) {
if(n<=1) return 1;
else return n*f(n-1);
}
int main() {
printf("%d", f(7));
}
더보기
5040
- 7팩토리얼 : 1부터 7까지의 곱셈
문제5. 문자열 포인터
#include
int main() {
char* p = "KOREA";
printf("%s\n", p);
printf("%s\n", p+1);
printf("%c\n", *p);
printf("%c\n", *(p+3));
printf("%c\n", *p+4);
}
더보기
KOREA
OREA
K
E
O
- p : p에 저장된 값을 문자형 출력(문자열 끝까지)
- p+1 : p는 포인터이기 때문에 +1하면 주소 연산 임. 따라서, 1byte 증가하라는 말. 11번지부터 출력해라.
- *p : p[0]의 값
- *(p+3) : p+3의 주소로 가서 그 값을 문자형식으로 출력
- *p+4 : p에 저장된 10번지의 값(K) + 4
- 아스키 코드 K = 75 , O = 79
문제6. 상속, 오버라이딩, 재귀함수
class Parent {
int compute(int num) {
if(num <= 1)
return num;
return compute(num-1) + compute(num-2);
}
}
class Child extends Parent {
int compute(int num) {
if(num <= 1)
return num;
return compute(num-1) + compute(num-3);
}
}
public class main {
public static void main(String args[]) {
Parent obj = new Child();
System.out.print(obj.compute(7));
}
}
더보기
2
문제7. Static 메소드, 변수
class Person {
private String name;
public Person(String val) {
name = val;
}
public static String get() {
return name;
}
public void print() {
System.out.println(name);
}
}
public class main {
public static void main(String[] args) {
Person obj = new Person("Kim");
obj.print();
}
}
에러가 발생하는 라인명을 작성
더보기
7
- private String name; : 인스턴스 변수
- public static String get() : static 메소드
- return name; : 인스턴스 변수
- 반환형은 일치하나 name변수가 static이 아니기 때문에 오류 발생
- JAVA 메모리 영역
- Static에서 Heap 참조 안됨
- 프로그램이 컴파일 되자마자 name변수는 자바 메모리 공간을 할당받고 있지 않기 때문
- Static에서 Heap 참조 안됨
문제8.
print("파이썬 입출력에 대한 문제입니다.")
num1, num2 = input()._____()
num1 = int(num1)
num2 = int(num2)
print(num1,num2)
num3 = num1 + num2
print(num1 + " + " + num2 + " = " + num3)
특이사항
입력값은 2와 3이다.
출력화면
파이썬 입력출에 대한 문제입니다.
2 3
2 + 3 = 5
더보기
split
📀 유튜브 문제 해설