[정보처리기사 필기] 기출문제 - 201 ~ 250. 오답노트

204. 객체지향의 특성

  • 캡슐화 Encapsulation
  • 정보은닉 Information Hiding
  • 상속 Inheritance
  • 추상화 Abstraction
  • 다형성 Polymorphism

205. 캡슐화

  • Encapsulation
  • 속성과 기능을 하나로 결합하여 객체로 구성
  • 클래스 내부의 동작을 모르더라도 클래스가 제공하는 메서드를 사용해 클래스의 기능을 사용
  • 캡슐화를 통해 정보 은닉 Information Hiding이 가능

208. 추상화

  • Abstraction
  • 실체에서 공통되는 속성이나 관심 있는 부분만 추출하여 모델링 하는 개념
  • 공통 성질을 추출하여 슈퍼클래스로 설정

210. 다형성

  • Polymorphism
  • 동일한 이름의 오퍼레이션(메소드)이 각 클래스마다 다른 사양으로 정의될 수 있다는 것
  • 메시지에 의해 객체가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체가 가지고 있는 고유한 방법으로 응답할 수 있는 능력

211. 다형성의 2가지 기법

구분 오버로딩 Overloading 오버라이딩 Overriding
개념 같은 클래스 또는 상속된 클래스에서 동일한 이름의 메소드 작성 하위 클래스에서 상위 클래스와 동일한 이름의 메소드 작성
상속 불필요 반드시 상속관계
목적 의미적으로 동일한 함수를 직관적인 이름으로 사용 위 클래스의 메소드를 재정의하여 새로운 기능으로 재작성
조건 같은 이름
다른 파라미터 개수 / 다른 파라미터 자료형
같은 이름
같은 파라미터 개수
같은 파라미터 자료형
동일한 리턴값
바인딩 정적 바인딩
컴파일 시간에 결정
동적 바인딩
실행 시간에 결정

213. 클래스 다이어그램의 화살표

  • 일반화 관계 : 상속관계, 하위 클래스에서 시작해서 화살표가 상위 클래스를 향함
  • 실체화 관계 : 구현관계, 시작점에 있는 클래스가 기능을 구현하는 구현 클래스이고 화살표가 향하는 곳이 구현해야할 메소드를 갖고 있는 인터페이스
  • 의존 관계 : 객체가 생성되고 사용하는 관계, 객체를 생성해서 사용하는 클래스에서 객체화되는 클래스
  • 연관 관계 : 필드로 다른 객체를 참조하는 관계

214. 클래스 다이어그램의 표현 

  • 인터페이스 / 추상클래스 : 이름 부분이 이탤릭체
  • 멤버변수(hp)가 있으면 인터페이스가 아님
  • 추상 클래스의 특성
    • 객체를 생성할 수 없음
    • 선언된 추상메소드를 구현한 하위 클래스에서 객체 생성이 가능

215. 오버라이딩

  • 상속된 클래스에서 상위 클래스의 메소드를 재정의하는 클래스 다이어그램
  • 클래스 다이어그램에서 이탤릭으로 되어 있는 메소드는 오버라이딩 되어야 함 : attack() 메소드는 Medic, Soldier 클래스에서 각각 다른 동작으로 구현될 것임을 예상할 수 있

222. 언어의 구분

  • 컴파일 언어 (컴파일 방식)
    • 고급 언어를 기계어로 번역한 후 실행
    • 실행에 필요한 정보가 컴파일 시간에 계산되어 실행 후 속도가 빠름
    • 언어의 종류 : FORTRAN, PASCAL, C, C#
  • 스크립트 언어 (인터프리터 방식)
    • 고급 언어를 명령어 단위로 하나씩 번역하고 실행
    • 프로그램 실행 시 계산
    • 언어의 종류 : JavaScript, PROLOG, LISP, SNOBOL, Basic, Python, PHP
  • 혼합방식
    • 고급 언어를 컴파일하여 중간 언어로 변환한 후 인터프리터에 의해 번역을 실행
    • 언어의 종류 : Java

223. AOP

  • 객체를 핵심과 횡단 관심사로 분리, 횡단 관심사를 관점 모듈로 정의하여 핵심과 엮어서 처리하도록 지원하는 프로그래밍 기법
    • 핵심 관심사 : 프로그램을 작성하려는 핵심 가치와 목적이 드러난 관심 영역
    • 횡단 관심사 : 로깅과 트랜잭션, 인증처리 등 시스템 공통 처리 영

229. 증감연산자와 반복문

int a = new int[3];

for (int i = 0, j = 0; i < a.length ; i++) {
   a[i] = ++j;
   System.out.print(a[i] + ", ");
}
  • 반복문과 배열, 전위증감연산자를 알고 있는지에 대해 묻는 문제
  • a는 int 타입 3개로 선언되어, a.length = 3이고, i는 0부터 3보다 작을 때까지 반복되므로, i는 0, 1, 2까지 증가
  • j는 0으로 초기화되어 있고, a[i]에 할당될 때 "전위증가연산자"에 의해 1,2,3으로 증가하면서 할당
  • 전위 증감 연산자
    • 표기법 : ++j
    • 의미 : j = j + 1

230. 증감연산자

int a = 0;

System.out.print(a++);
System.out.print(", ", ++a);
  • 후위 증감 연산자는 연산 이후 (다음 라인 또는 세미콜론(;)) 이후에 반영
  • 첫번째 출력문의 값은 0
  • 두번째 출력문에서는 a 값이 1로 증가되어 있음
  • 전위 증감 연산자는 연산 수행 즉시 반영
  • 두번째 출력문에서 a 값은 2로 출력

231. 논리연산자

  • && 연산 AND : 양쪽 모두 true 일 때만 true, 아닌 경우 false
  • || 연산 OR : 한쪽만 true 일 때 true, 양쪽 모두 false일 경우만 false
  • ! 연산 NOT : true → false, false → true

232. 비트연산 : 10진수일 경우 2진수로 변환 후 계산

연산자 기능 설명
& AND 두 개의 비트가 모두 1일 때 1을 반환, 아닐 경우 0
| OR 두 개의 비트 중 하나라도 1이면 1을 반환, 아닐 경우 0
^ XOR 두 개의 비트가 서로 다른 경우 1을 반환, 같은 경우 0
~ 단항 연산자로서 피연자의 모든 비트를 반전 0에서 1로, 1에서 0으로 반전시키는 연산
피연산자의 비트 열을 왼쪽으로 이동
피연산자의 비트 열을 오른쪽으로 이동

234. 비선형 자료 구조

  • 트리 : 일반 트리, 이진 트리
  • 그래프 : 방향 그래프, 무방향 그래프

238. 스택의 출력

  • 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 및 후입 선출 구조
  • 스택의 연산
    • top() : 스택의 가장 윗 데이터를 반환, 스택이 비었을 경우 이 연산은 정의 불가 상태
    • pop() : 스택의 가장 윗 데이터를 삭제, 스택이 비었을 경우 이 연산은 정의 불가 상태
    • push() : 스택의 가장 윗 데이터로 top이 가리키는 자리 위에 (top = top + 1) 메모리를 생성, 데이터 x를 넣음
    • 3empty() : 스택이 비었다면 1을 반환, 그렇지 않다면 0을 반환 

242. 원형 큐의 상태

  • Empty 상태
    • 코드 : rear == front
  • Full 상태
    •  
    • 코드 : (rear + 1) % MAX == front

 

243. 트리 순회 방식 : (Root)를 언제 순회하느냐에 따라 구분

  • 전위순회 Pre-Order : (Root), Left, Right
  • 중위순회 In-Order  : Left, (Root), Right
  • 후위순회 Post-Order  : Left, Right, (Root)

244. 트리의 구성

  • 루트 노드 root node : 부모가 없는 노드, 트리는 하나의 루트 노드만을 가짐
  • 단말 노드 leaf node : 자식이 없는 노드
  • 내부 노드 internal node : 루트나 단말 노드가 아닌 노드
  • 링크 link : 노드를 연결하는 선, edge, branch
  • 형제 sibling : 같은 부모를 가지는 노드
  • 노드의 크기 size : 자신을 포함한 모든 자손 노드의 개수
  • 노드의 깊이 depth : 루트에서 어떤 노드에 도달하기 위해 거쳐야 하는 간선의 수
  • 노드의 레벨 level : 트리의 특정 깊이를 가지는 노드의 집합
  • 노드의 차수 degree : 부(하위) 트리 개수 혹은 간선의 수, 각 노드가 가진 가지의 수
  • 트리의 차수 degree of tree : 트리의 최대 차수, 노드의 차수 중 가장 큰 차수의 의미
  • 트리의 높이 height : 루트 노드에서 가장 깊숙히 있는 노드의 깊이

245. 트리의 차수

  • 가장 많은 자식을 가진 노드의 자식의 수

246. 이진트리

  • 포화 이진트리 full binary tree
    • 모든 레벨에서 노드들이 모두 채워져 있는 트리
  • 완전 이진트리 complete binary tree
    • 높이 : log₂N
    • 마지막 레벨을 제외하고 노드가 모두 채워져 있는 트리
  • 편향 이진트리 Skewed binary tree
    • 높이 : N-1
    • 트리의 노드가 왼쪽이나 오른쪽으로 한쪽으로만 노드가 있는 트리

247. 이진탐색트리

  • 검색을 위해 사용
  • 왼쪽 자식 노드 < 부모노드 < 오른쪽 자식 노드
    • 왼쪽 자식 노드가 부모노드보다 작아야 함 : 왼쪽 자식 노드 < 부모노드
    • 오른쪽 자식 노드는 부모노드보다 커야 함 : 오른쪽 자식 노드 > 부모노드

248. 이진탐색트리

  • 검색을 위해 사용
  • 왼쪽 자식 노드 < 부모노드 < 오른쪽 자식 노드
    • 왼쪽 자식 노드가 부모노드보다 작아야 함 : 왼쪽 자식 노드 < 부모노드
    • 오른쪽 자식 노드는 부모노드보다 커야 함 : 오른쪽 자식 노드 > 부모노드

250. 그래프의 특징

  • 무방향 그래프 UnDirected Graph
    • 정점과 정점을 연결하는 간선에 방향성이 없는 그래프
    • 최대 edge 수 : 정점(V)이 n개 있다면, 최대 간선(E) = n(n-1)/2
  • 방향 그래프 Directed Graph
    • 정점과 정점을 연결하는 선에 방향이 있는 그래프
    • 최대 edge 수 : 두 정점에 대하여 방향이 다른 두 개의 간선을 연결할 수 있음, 최대 간선(E) = n(n-1) → 무 방향 그래프보다 2배 많음