정보처리기사 실기

[TIL/정보처리기사 실기] 2024/06/12

✅ [23년 10월 1번, JAVA] > ✅ [23년 10월 2번, 용어] > ✅ [23년 10월 3번, C] > ✅ [23년 10월 4번, C] > ✅ [23년 10월 5번, 리눅스 or 유닉스에서 a.txt 파일] chmod는 리눅스 또는 유닉스에서 파일

2024년 6월 12일3min read

✅ [23년 10월 1번, JAVA]

code
class SuperObject {
    public void draw() {
        System.out.println("A");
        draw();
    }
    // 5. 반환값이 없는 paint() 메소드의 시작점이다.
    public void paint(){
        // 6. B를 출력한다.
        System.out.println("B");
        // 7. draw() 메소드를 호출한다. draw() 메소드는 2번 경우와 마찬가지로 자식 클래스에서 재정의되었으므로 SubObject 클래스의 draw() 메소드가 호출된다.
        draw();
        // 10. paint() 메소드가 종료되었으므로 메소드를 호출했던 4번 다음 줄로 이동한다.
    }
}
class SubObject extends SuperObject {
    // 3. 반환값이 없는 paint() 메소드의 시작점이다.
    public void paint(){
        // 4. 부모 클래스를 호출하는 예약어 super를 사용했으므로, 부모 클래스의 paint() 메소드를 호출한다.
        super.paint();
        // 11. 화면에 C를 출력한다.
        System.out.println("C");
        // 12. draw() 메소드를 호출한다.
        draw();
        // 15. paint() 메소드가 종료되었으므로, 메소드를 호출했던 2번 다음 줄로 이동한다.
    }
    // 8. 반환값이 없는 draw() 메소드의 시작점이다.
    // 13. 반환값이 없는 draw() 메소드의 시작점이다.
    // 17. 반환값이 없는 draw() 메소드의 시작점이다.
    public void draw(){
        // 9. 화면에 D를 출력한다. draw() 메소드가 종료되었으므로, 메소드를 호출했던 7번 다음 줄로 이동한다.
        // 14. 화면에 D를 출력한다. draw() 메소드가 종료되었으므로, 메소드를 호출했던 12번 다음 줄로 이동한다.
        // 18. 화면에 D를 출력한다. draw() 메소드가 종료되었으므로, 메소드를 호출했던 16번 다음 줄로 이동한다.
        System.out.println("D");
    }
}
public class Test {
    // 0. 모든 Java 프로그램은 반드시 main 메소드에서 시작한다.
    public static void main(String[] args){
        // 1. SubObject 클래스의 생성자를 이용하여 SuperObject 클래스의 객체 변수 a를 생성한다.
        SuperObject a = new SubObject();
        // 2. a의 paint() 메소드를 호출한다.
        a.paint();
        // 16. draw() 메소드를 호출한다.
        a.draw();
        // 19. main() 메소드가 종료되었으므로, 프로그램이 종료된다.
    }
}
// 결과 B,D,C,D,D

지금 이해 안 됨

✅ [23년 10월 2번, 용어]

code
- 인터넷 애플리케이션에서 사용자 인증에 사용되는 표준 인증 방법으로, 공개 API로 구현되었다.
- 인터넷 사용자가 웹사이트나 애플리케이션에 비밀번호를 제공하지 않고 자신에게 접근 권한을 부여하여 사용할 수 있다.
- 2010년 ETF에서 1.0이 공식 표준안으로 발표되었다.
 
// OAuth

✅ [23년 10월 3번, C]

code
#include <stdio.h>
main() {
    // 1. 문자형 포인터 변수 p에 "KOREA"를 저장한다.
   char*p = "KOREA";
    // 2. 1.을 출력하고, p의 위치부터 널문자(\0) 전까지의 모든 문자를 출력한다.
   printf("1. %s\n", p);
    // 3. 2.을 출력하고, p+1의 위치부터 널문자(\0) 전까지의 모든 문자를 출력한다.
   printf("2. %s\n", p+1);
    // 4. 3.을 출력하고, p가 가리키는 곳의 문자 K를 출력한다.
   printf("3. %c\n", *p);
    // 5. 4.을 출력하고, p+3이 가리키는 곳의 문자 E를 출력한다.
   printf("4. %c\n", *(p+3));
    // 6. 5.을 출력하고, p가 가리키는 곳에 4를 더한 후(알파벳) 출력한다.
   printf("5. %c\n", *p+4);
}
// 1. KOREA
// 2. OREA
// 3. K
// 4. E
// 5. O

5번 추가설명: K L M N O

✅ [23년 10월 4번, C]

code
#include <stdio.h>
// 구조체 정의: insa
struct insa {
    // 이름을 저장하는 문자열 배열
    char name[10];
    // 나이를 저장하는 정수        
    int age;    
    // 구조체 포인터, p1의 구현자 A          
    struct insa* impl_a;    
     // 구조체 포인터, p2의 구현자 B
    struct insa* impl_b;  
};
// main 함수
int main(){
    // insa 구조체 변수들 선언 및 초기화
     // p1 구조체 변수 초기화
    struct insa p1 = {"Kim", 28, NULL, NULL };
    // p2 구조체 변수 초기화  
    struct insa p2 = {"Lee", 36, NULL, NULL };    
     // p3 구조체 변수 초기화
    struct insa p3 = {"Park", 41, NULL, NULL };  
   
    // 포인터 연결: p1의 구현자 A는 p2를 가리키게 함
    p1.impl_a = &p2;
    // 포인터 연결: p2의 구현자 B는 p3를 가리키게 함
    p2.impl_b = &p3;
   
    // p1의 구현자 A의 이름 출력
    // "Lee" 출력
    printf("%s\n", p1.impl_a->name);  
    // p2의 구현자 B의 나이 출력
    // 41 출력
    printf("%d\n", p2.impl_b->age);  
    // main 함수 종료
    return 0;  
}
 // Lee
 // 41

추가 설명: printf("%s\n", p1.impl_a->name): p2의 이름 출력하세요   printf("%d\n", p2.impl_b->age): p3의 나이 출력하세요  

✅ [23년 10월 5번, 리눅스 or 유닉스에서 a.txt 파일]

code
- 사용자에게 읽기, 쓰기, 실행 권한을 부여한다.
- 그룹에게 읽기, 실행 권한을 부여한다.
- 기타 사용자에게 실행 권한을 부여한다.
- 한 줄로 작성하고, 8진법 숫자를 이용한 명령문을 이용한다.
 
// chmod 751 a.txt

chmod는 리눅스 또는 유닉스에서 파일 권한을 변경하는 명령어 4(읽기), 2(쓰기), 1(실행) 사용자(4+2+1=7), 그룹(4+1=5), 기타(1)