JAVA(3문제)
https://www.mycompiler.io/ko/new/java
새 Java 프로그램 만들기 - 마이컴파일러 - myCompiler
실행 코드 코드 저장 기존 코드를 유지하시겠습니까? 에디터에 코드가 있는 동안 언어를 전환하려고 합니다. 이를 유지하려면 “기존 코드 유지”를 선택합니다. 예제로 바꾸려면 “예제로 바
www.mycompiler.io
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
동적 바인딩과 메서드 호출
- Java에서는 메서드 호출이 실행 시점에 결정
- 객체의 실제 타입에 따라 호출되는 메서드가 결정되는것을 동적 바인딩이라고 함
super.메서드() : 부모 클래스의 메서드를 실행
A클래스의 draw()는 B를 출력하고 this.draw()를 호출하고 this의 시점은 항상 현재 객체인 실제로 생성된 객체를 가리킨다
해당 문제에서는 B클래스의 draw()가 실행
2. 출력값 구하기
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
compute(7) = compute(6) + compute(4) = 1 + 1 = 2
compute(6) = compute(5) + compute(3) = 1 + 0 = 1
compute(5) = compute(4) + compute(2) = 1 + 0 = 1
compute(4) = compute(3) + compute(1) = 0 + 1 = 1
compute(3) = compute(2) + compute(0) = 0 + 0 = 0
compute(2) = compute(1) + compute(-1) = 1 -1 = 0
compute(1) = 1
compute(0) = 0
compute(-1) = -1
3. 에러 발생 라인 찾기
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라인 return name;
컴파일 오류로 인해 프로그램이 실제로 실행되지 않음
- error: non-static variable name cannot be referenced from a static context return name;
- name은 인스턴스 변수이기 때문에 non-static인데 get() 메서드는 static으로 선언되어 있기 때문에 인스턴스 변수인 name 변수를 참조할 수 없어 컴파일 오류 발생
- 해결책 : get() 에서 static 키워드를 제거하거나, name 변수를 static으로 변경한다
JAVA에서 static
- static 키워드는 클래스의 구성 요소(변수, 메서드, 블록 또는 중첩 클래스)를 클래스 레벨로 정의 할 때 사용
- static으로 선언된 구성 요소는 클래스의 인스턴스가 아닌 클래스 자체에 속한다
- 클래스 레벨에서 공유 하기 때문에 해당 클래스의 모든 인스턴스가 공유한다
- 객체를 생성하지 않고도 접근 가능 하며, 프로그램 실행 시 클래스가 메모리에 로드될 때 초기화 된다
- this 키워드 사용이 불가하다(this는 인스턴스에 대한 참조를 의미)
- static메서드에서 non-static 멤버에 접근이 불가하다
C언어(4문제)
https://www.mycompiler.io/ko/new/c
새 C 프로그램 만들기 - 마이컴파일러 - myCompiler
실행 코드 코드 저장 기존 코드를 유지하시겠습니까? 에디터에 코드가 있는 동안 언어를 전환하려고 합니다. 이를 유지하려면 “기존 코드 유지”를 선택합니다. 예제로 바꾸려면 “예제로 바
www.mycompiler.io
1. 출력값 구하기
#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
test(n) 함수 : n을 1~n/2 차례로 나누어서 나머지가 0일 경우의 나눈값들을 다 더한 값이 n일 경우 1(true) 반환
test(n)이 true 일 경우의 n들을 더한 값을 구하는 문제
완전수
- 자기 자신을 제외한 약수들의 합이 자기 자신이 되는 수
- 6, 28, 496, 8128 등
2. 빈칸 작성 : 구조체 멤버에 접근하기 위한 기호
#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;
}
빈칸 : ->
구조체 포인터 & typedef 키워드 함께 사용하기
- 구조체 정의
typedef struct 기존구조체명 {...} 새로운구조체명 - 구조체 선언 & 초기화
새로운구조체명 *구조체포인터변수명 = 값 - 구조체 포인터의 멤버 참조
- 도트 연산자(.) 이용
(*포인터변수명).멤버변수명 - 포인터 연산자(->) 이용
포인터변수명 -> 멤버변수명
- 도트 연산자(.) 이용
malloc 함수
- void *malloc(size_t size);
- 동적으로 메모리 할당하는 대표적인 함수
3. 출력값 구하기
#include
int f(int n) {
if(n<=1) return 1;
else return n*f(n-1);
}
int main() {
printf("%d", f(7));
}
출력값 : 5040
f(7) : 7 * f(6) = 7 * 720 = 5040
f(6) : 6 * f(5) = 6 * 120 = 720
f(5) : 5 * f(4) = 5 * 24 = 120
f(4) : 4 * f(3) = 4 * 6 = 24
f(3) : 3 * f(2) = 3 * 2 = 6
f(2) : 2 * f(1) = 2 * 1 = 2
f(1) : 1
4. 출력값 구하기
#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
포인터 연산
- 포인터변수명 : 포인터 변수에 들어 있는 주소의 값 ~ 주소 끝의 값
- 포인터변수명+n : 포인터 변수 + n 만큼 이동 후 주소의 값 ~ 주소 끝의 값
- *포인터변수명 : 포인터 변수에 들어 있는 주소의 값
- *(포인터변수명+n) : 포인터 변수 + n 만큼 이동 후 주소의 값
- *포인터변수명 + n :포인터 변수에 들어 있는 주소의 값 + n ==> 문자열 연산
PYTHON(1문제)
https://www.mycompiler.io/ko/new/python
새 Python 프로그램 만들기 - 마이컴파일러 - myCompiler
실행 코드 코드 저장 기존 코드를 유지하시겠습니까? 에디터에 코드가 있는 동안 언어를 전환하려고 합니다. 이를 유지하려면 “기존 코드 유지”를 선택합니다. 예제로 바꾸려면 “예제로 바
www.mycompiler.io
1. 빈칸 작성 : input()으로 입력받은 수 차례로 변수에 저장하는 함수
print("파이썬 입출력에 대한 문제입니다.")
num1, num2 = input()._____()
num1 = int(num1)
num2 = int(num2)
print(num1,num2)
num3 = num1 + num2
print(num1 + " + " + num2 + " = " + num3)
빈칸 : split()
Python split()
- 문자열.split([분류조건],[나눌횟수]) : 분류조건에 따라 나눌횟수만큼 나눠서 list 반환
- input.split() : 공백 기준으로 분리해 입력 받음
Python map()
- map([값의 타입],[적용할 값])
- map(int, input().split()) : 공백을 기준으로 나눠 map함수를 통해 쪼개 입력 받음
- list(map(int,input().split())) : 공백 기준으로 입력 받은 값을 리스트로 형변환해서 받음
SQL(2문제)
https://www.programiz.com/sql/online-compiler/
Online SQL Editor
www.programiz.com
1. 결과값 구하기
SELECT A FROM T1
UNION
SELECT A FROM T2
ORDER BY A DESC;
T1
A |
3 |
1 |
4 |
T2
A |
2 |
4 |
3 |
결과값 :
A
4
3
2
1
UNION, UNION ALL
- 2개 이상의 SELECT 쿼리 결과를 하나로 연합시켜주는 집합 연산자
- 열의 개수와 순서가 모든 쿼리에서 동일하고, 데이터 형식이 호환되어야 함
- UNION : 중복값 제거를 위해 연산을 한번 더 함
- UNION ALL : 중복값 제거 연산이 없어서 속도가 빠르지만 중복값 제거 없이 전부 하나로 만듦
ORDER BY : 정렬
- ASC : 오름차순
- DESC : 내림차순
2. 관계대수
1. join : ( 1 )
2. project : ( 2 )
3. select : ( 3 )
4. division : ( 4 )
ㄱ. σ ㄴ. π ㄷ.⋈ ㄹ.÷
정답 : 1 - ㄷ, 2 - ㄴ, 3 - ㄱ, 4 - ㄹ
관계대수 기호
U : 합집합
X : 카디션 프로덕트
- : 차집합
σ : 셀렉트
π : 프로젝트
⋈ : 조인
÷ : 디비전
∩ : 교집합
'문제 > 정보처리기사실기' 카테고리의 다른 글
[정보처리기사 실기] 2022년 3회 JAVA, C, PYTHON, SQL (0) | 2024.09.21 |
---|---|
[정보처리기사 실기] 2023년 1회 JAVA, C, PYTHON, SQL (0) | 2024.09.12 |
[정보처리기사 실기] 2023년 2회 JAVA, C, PYTHON, SQL (0) | 2024.08.26 |
[정보처리기사 실기] 2024년 1회 JAVA, C, PYTHON, SQL (0) | 2024.08.04 |
[정보처리기사 실기] 2024년 2회 JAVA, C, PYTHON, SQL (0) | 2024.08.02 |