JAVA(3문제)
https://www.mycompiler.io/ko/new/java
새 Java 프로그램 만들기 - 마이컴파일러 - myCompiler
실행 코드 코드 저장 기존 코드를 유지하시겠습니까? 에디터에 코드가 있는 동안 언어를 전환하려고 합니다. 이를 유지하려면 “기존 코드 유지”를 선택합니다. 예제로 바꾸려면 “예제로 바
www.mycompiler.io
1. 출력값 구하기
class Connection {
private static Connection _inst = null;
private int count = 0;
static public Connection get() {
if(_inst == null) {
_inst = new Connection();
return _inst;
}
return _inst;
}
public void count() {
count++;
}
public int getCount() {
return count;
}
}
public class Main {
public static void main(String[] args) {
Connection conn1 = Connection.get();
conn1.count();
Connection conn2 = Connection.get();
conn2.count();
Connection conn3 = Connection.get();
conn3.count();
conn1.count();
System.out.print(conn1.getCount());
}
}
출력값 : 4
Singleton 패턴
- 클래스의 인스턴스를 하나만 생성하고 공유
- 접근 제한자 private를 통해서 외부에서 new 연산자로 생성자를 호출 못하게 막음
- 어디서 호출하든 동일한 인스턴스에 접근 가능
- 같은 인스턴스에서 count() 메서드를 4번 실행 하면 count의 값은 4
2. 실행순서(중복없이)
class Parent {
int x, y;
Parent(int x, int y) { ①
this.x=x;
this y=y;
}
int getT() { ②
return x*y;
}
}
class Child extend Parent {
int x;
Child (int x) { ③
super(x+1, x);
this.x=x;
}
int getT(int n){ ④
return super.getT()+n;
}
}
class Main {
public static void main(String[] args) { ⑤
Parent parent = new Child(3); ⑥
System.out.println(parent.getT()); ⑦
}
}
출력순서 : 5 - 6 - 3 - 1 - 7 - 2
super(매개변수) : 부모 클래스의 생성자를 호출함
객체의 getT() 메서드가 자식 클래스에서 재정의(오버라이딩) 되어 있지 않기 때문에 부모 클래스의 getT()가 실행 된다
get(int T), get() 은 매개변수에 차이를 준 오버로딩 메서드
3. 출력값 구하기
class ClassOne {
int a, b;
public ClassOne(int a, int b) {
this.a = a;
this.b = b;
}
public void print() {
System.out.println(a + b);
}
}
class ClassTwo extends ClassOne {
int po = 3;
public ClassTwo(int i) {
super(i, i+1);
}
public void print() {
System.out.println(po*po);
}
}
public class Main {
public static void main(String[] args) {
ClassOne one = new ClassTwo(10);
one.print();
}
}
출력값 : 9
print() 메서드가 상속받은 ClassTwo 클래스에서 재정의 되었기 때문에 ClassTwo 클래스의 print() 메서드 실행
C언어(4문제)
https://www.mycompiler.io/ko/new/c
새 C 프로그램 만들기 - 마이컴파일러 - myCompiler
실행 코드 코드 저장 기존 코드를 유지하시겠습니까? 에디터에 코드가 있는 동안 언어를 전환하려고 합니다. 이를 유지하려면 “기존 코드 유지”를 선택합니다. 예제로 바꾸려면 “예제로 바
www.mycompiler.io
1. 출력값 구하기
#include <stdio.h>
int main() {
int v1 = 0, v2 = 35, v3 = 29;
if(v1 > v2 ? v2 : v1) {
v2 = v2 << 2;
}else{
v3 = v3 << 2;
}
printf("%d", v2+v3);
}
출력값 : 151
비트연산자
- << : 왼쪽으로 비트만큼 시프트
- >> : 오른쪽으로 비트만큼 시프트
C의 Boolean Type
- 불리언형은 false, true 두 가지 결과만 있음
- 내부적으론 정수이기 때문에 0(false), 1(true)이다
- 정수 값 평가시 0은 거짓, 0 외에 다른 값은 참으로 간주 된다
if(0) {...}else{...} :조건식 0은 거짓이므로 else문 실행
29 << 2 : 00011101 << 2 = 01110100 = 116
v2+v3 = 35+116 = 151
2. 출력값 구하기
#include <stdio.h>
#include <string.h>
void reverse(char* str){
int len = strlen(str);
char temp;
char* p1 = str;
char* p2 = str + len - 1;
while(p1<p2){
temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
int main(int argc, char* argv[]){
char str[100] = "ABCDEFGH";
reverse(str);
int len = strlen(str);
for(int i=1; i<len; i+=2){
printf("%c",str[i]);
}
printf("\n");
return 0;
}
출력값 : GECA
포인터 변수의 연산 : char *p = "KOREA";
- 포인터변수 = 문자열 + i : // 문자열에 i번째 인덱스부터 저장
- char *p2 = "KOREA" + 2 // REA
- 포인터변수++ : 포인터 오른쪽으로 한 칸 이동, p+1
- p++ //OREA
- 포인터변수-- : 포인터 왼쪽으로 한 칸 이동, p-1
- p-- // 포인터 위치 EA 상태에서 p-- REA
p1 | p2 | ||||||
A | B | C | D | E | F | G | H |
1번째 반복 : temp = A, 위치 교환 후 이동
p1 | p2 | ||||||
H | B | C | D | E | F | G | A |
...
4번째 반복 : temp = A, 위치 교환 후 이동
p2 | p1 | ||||||
H | G | F | E | D | C | B | A |
4번째 반복만에 p1<p2 거짓이 되면서 반복문 종료
3. 출력값 구하기
#include <stdio.h>
typedef struct{
int accNum;
double bal;
}BankAcc;
double sim_pow(double base, int year){
int i;
double r = 1.0;
for(i=0; i<year; i++){
r = r*base;
}
return r;
}
void initAcc(BankAcc *acc, int x, double y){
acc -> accNum = x;
acc -> bal = y;
}
void xxx(BankAcc *acc, double *en){
if (*en > 0 && *en < acc -> bal) {
acc -> bal = acc -> bal-*en;
}else{
acc -> bal = acc -> bal+*en;
}
}
void yyy(BankAcc *acc){
acc -> bal = acc -> bal * sim_pow((1+0.1),3);
}
int main(){
BankAcc myAcc;
initAcc(&myAcc, 9981, 2200.0);
double amount = 100.0;
xxx(&myAcc, &amount);
yyy(&myAcc);
printf("%d and %.2f", myAcc.accNum, myAcc.bal);
return 0;
}
출력값 : 9981 and 2759.10
typedef 예약어를 이용한 구조체 선언
- typedef struct 구조체명{구조체 멤버 정의...} 자료형명;
- 구조체를 자료형명이라는 이름으로 사용하겠다는 의미로 struct를 붙이지 않고 선언 가능
- typedef 예약어 사용시 자료형명 필수!
실수 포매팅 : %정수자리.실수자리f : 정수자리갯수.실수자리갯수
- %6.1f : 6자리, 소수점 1자리 출력
- %07.2f : 7자리, 소수점 2자리 출력, 공백은 0으로 채워짐
BankAcc myAcc : 구조체를 자료형명으로 선언
initAcc(&myAcc, 9981, 2200.0) : 구조체 멤버값 accNum = 9981 / bal = 2200.0 할당
xxx(&myAcc, &amount) : 조건문 참으로 if절 실행, bal = 2200.0 - 100.0 = 2100.0
yyy(&myAcc) : bal = 2100.0 * sim_pow(1.1,3) = 2100.) = 2100.0 * 1.331 = 2795.1
printf("%d and %.2f" , 9981, 2759.1) : 9981 and 2759.10
4. 출력값 구하기
#include<stdio.h>
#include<ctype.h>
int main(){
char *p = "It is 8";
char result[100];
int i;
for(i=0; p[i]!='\0'; i++){
if(isupper(p[i]))
result[i] = (p[i]-'A'+5)% 25 + 'A';
else if(islower(p[i]))
result[i] = (p[i]-'a'+10)% 26 + 'a';
else if(isdigit(p[i]))
result[i] = (p[i]-'0'+3)% 10 + '0';
else if(!(isupper(p[i]) || islower(p[i]) || isdigit(p[i])))
result[i] = p[i];
}
result[i] = '\0';
printf("%s\n",result);
return 0;
}
출력값 : Nd sc 1
int isupper(int c);
- 매개변수로 돌아온 문자가 대문자인지 확인
- 대문자 일 경우 0이 아닌 수(True), 대문자가 아닐 경우 0(False)을 반환
int islower(int c);
- 매개변수로 돌아온 문자가 소문자인지 확인
- 소문자 일 경우 0이 아닌 수(True), 소문자 아닐 경우 0(False)을 반환
int isdit(int c);
- 매개변수로 돌아온 문자가 10진수 숫자로 변경이 가능한지 확인
- 10진수 숫자 일 경우 해당 숫자(True), 아닐 경우 0(False)을 반환
아스키코드
- 대문자 'A' ~ 'Z': 65~90
- 소문자 'a' ~ 'z': 97~122
- 숫자 0~9 : 48~57
('대문자' - 'A' + 5) % 25 + 'A' = ('대문자' - 60) % 25 + 65
- I : (73 - 60) % 25 + 65 = 78 = 'M'
('소문자' - 'a' + 10) % 26 + 'a' = ('소문자' - 87) % 26 + 97
- t : (116 - 87) % 26 + 97 = 100 = 'd'
- i : (105 - 87) % 26 + 97 = 115 = 's'
- s : (115 - 87) % 26 + 97 = 99 = 'c'
('숫자'-'0'+3)% 10 + '0' = ('숫자' - 45) % 10 +48
- 8 : (56 - 45) % 10 + 48 = 49 = '1'
PYTHON(1문제)
https://www.mycompiler.io/ko/new/python
새 Python 프로그램 만들기 - 마이컴파일러 - myCompiler
실행 코드 코드 저장 기존 코드를 유지하시겠습니까? 에디터에 코드가 있는 동안 언어를 전환하려고 합니다. 이를 유지하려면 “기존 코드 유지”를 선택합니다. 예제로 바꾸려면 “예제로 바
www.mycompiler.io
1. 출력값 구하기
a = ["Seoul", "Kyeonggi", "Incheon", "Daejun", "Daegu", "Pusan"]
str = "S"
for i in a:
str = str + i[1]
print(str)
출력값 : Seynaau
파이썬 리스트
- 리스트명 = [요소, ...]
- 인덱싱, 슬라이싱 가능
- for i in 리스트명 : 리스트 요소를 차례로 i에 담아서 반복
S + e + y + n +a +a +u
SQL(2문제)
https://www.programiz.com/sql/online-compiler/
Online SQL Editor
www.programiz.com
1. 출력값 표로 작성
SELECT
B
FROM
R1
WHERE
C IN (SELECT C FROM R2 WHERE D="K");
R1
A | B | C |
1 | a | x |
2 | b | x |
1 | c | w |
3 | d | w |
R2
C | D | E |
x | k | 3 |
y | k | 3 |
z | s | 2 |
출력값 :
B |
a |
b |
SELECT B FROM R1 WHERE C IN("x", "y")
2. 결과값
SELECT
COUNT(*)
FROM
TABLE
WHERE
EMPNO > 100
AND
SAL >= 3000 OR EMPNO = 200
TABLE
EMPNO | SAL |
100 | 1000 |
200 | 3000 |
300 | 1500 |
결과값 : 1
COUNT(*) : 조회되는 데이터 행의 건수를 반환
COUNT(컬럼) : 컬럼의 값이 NULL인 행 제외한 건수를 반환
COUNT(DISTINCT 컬럼) : 컬럼의 값이 중복인 행을 제외하고 건수를 반환
'문제 > 정보처리기사실기' 카테고리의 다른 글
[정보처리기사 실기] 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 |
[정보처리기사 실기] 2023년 3회 JAVA, C, PYTHON, SQL (0) | 2024.08.20 |
[정보처리기사 실기] 2024년 2회 JAVA, C, PYTHON, SQL (0) | 2024.08.02 |