콘텐츠로 이동

소프트웨어 개발 연습문제

정답은 각 문제 아래 토글을 클릭하거나 페이지 하단에서 확인하세요.


알고리즘

Q1. 다음 중 안정 정렬(Stable Sort)에 해당하지 않는 것은?

  1. 버블 정렬
  2. 삽입 정렬
  3. 병합 정렬
  4. 퀵 정렬

Q2. 정렬된 배열 [1, 3, 5, 7, 9, 11]에서 값 9를 이진 탐색으로 찾을 때 비교 횟수는?

  1. 1회
  2. 2회
  3. 3회
  4. 4회

Q3. 다음 중 최악의 경우 시간복잡도가 O(n log n)인 정렬은?

  1. 퀵 정렬
  2. 버블 정렬
  3. 병합 정렬
  4. 선택 정렬

Q4. 다익스트라 알고리즘에 대한 설명으로 옳지 않은 것은?

  1. 단일 출발점 최단 경로를 구한다
  2. 음수 가중치 간선이 있는 경우에도 정상 동작한다
  3. 시간복잡도는 O(n²)이다
  4. 그리디 알고리즘 기반이다

자료구조

Q5. 스택(Stack)의 특성으로 옳은 것은?

  1. FIFO (First In First Out)
  2. LIFO (Last In First Out)
  3. 우선순위 기반 처리
  4. 양방향 삽입/삭제

Q6. 완전 이진 트리에서 노드가 15개일 때 트리의 높이는?

  1. 3
  2. 4
  3. 5
  4. 6

Q7. 해시 충돌 해결 방법 중 개방 주소법(Open Addressing)에 해당하지 않는 것은?

  1. 선형 탐사
  2. 제곱 탐사
  3. 이중 해싱
  4. 체이닝(Chaining)

소프트웨어 공학

Q8. 애자일 선언의 4가지 가치 중 옳지 않은 것은?

  1. 프로세스보다 개인과 상호작용
  2. 문서보다 동작하는 소프트웨어
  3. 계획을 따르기보다 변화에 대응
  4. 고객과의 협력보다 계약 협상

Q9. 스크럼에서 제품 백로그의 우선순위를 결정하고 관리하는 역할은?

  1. 스크럼 마스터
  2. 개발팀
  3. 제품 오너(PO)
  4. 아키텍트

Q10. 블랙박스 테스트 기법에 해당하지 않는 것은?

  1. 동등 분할
  2. 경계값 분석
  3. 기본 경로 테스트
  4. 결정 테이블

객체지향 프로그래밍

Q11. SOLID 원칙 중 "클래스는 확장에는 열려있고 변경에는 닫혀있어야 한다"는 것은?

  1. 단일 책임 원칙 (SRP)
  2. 개방-폐쇄 원칙 (OCP)
  3. 리스코프 치환 원칙 (LSP)
  4. 인터페이스 분리 원칙 (ISP)

Q12. 디자인 패턴 분류 중 싱글톤(Singleton), 팩토리 메서드(Factory Method)가 속하는 패턴 유형은?

  1. 구조 패턴
  2. 행동 패턴
  3. 생성 패턴
  4. 아키텍처 패턴

Q13. 다음 중 추상 클래스와 인터페이스에 대한 설명으로 옳은 것은?

  1. 인터페이스는 다중 상속이 불가능하다
  2. 추상 클래스는 인스턴스를 생성할 수 있다
  3. 인터페이스는 구현 메서드를 가질 수 없다 (Java 7 이하 기준)
  4. 추상 클래스는 상태(필드)를 가질 수 없다


Q14. 플로이드-워셜 알고리즘의 시간복잡도는?

  1. O(n)
  2. O(n log n)
  3. O(n²)
  4. O(n³)

Q15. 힙(Heap) 자료구조에서 최솟값을 O(1)에 조회할 수 있는 힙의 종류는?

  1. 최대 힙(Max Heap)
  2. 최소 힙(Min Heap)
  3. 이진 탐색 트리
  4. AVL 트리

Q16. 다음 중 O(1) 시간복잡도로 수행되는 연산이 아닌 것은?

  1. 배열의 인덱스 접근
  2. 해시 테이블 조회 (충돌 없는 경우)
  3. 연결 리스트 중간 삽입
  4. 스택의 push/pop

Q17. UML 다이어그램 중 시스템의 기능과 외부 사용자(Actor)의 관계를 나타내는 것은?

  1. 클래스 다이어그램
  2. 시퀀스 다이어그램
  3. 유스케이스 다이어그램
  4. 상태 다이어그램

Q18. 다음 중 행동 패턴(Behavioral Pattern)에 해당하는 디자인 패턴은?

  1. 싱글톤(Singleton)
  2. 어댑터(Adapter)
  3. 옵저버(Observer)
  4. 빌더(Builder)

Q19. 소프트웨어 테스트 중 수정 후 기존 기능이 정상적으로 동작하는지 확인하는 테스트는?

  1. 단위 테스트
  2. 통합 테스트
  3. 인수 테스트
  4. 회귀 테스트

Q20. 객체지향의 다형성(Polymorphism)에 대한 설명으로 옳은 것은?

  1. 클래스 내부 데이터를 외부에서 직접 접근하지 못하게 한다
  2. 같은 인터페이스로 다양한 객체를 다룰 수 있다
  3. 부모 클래스의 속성과 메서드를 자식 클래스가 이어받는다
  4. 구현 세부사항을 숨기고 핵심 개념만 표현한다

Q21. 다음 중 클래스 다이어그램의 합성(Composition) 관계에 대한 설명으로 옳은 것은?

  1. 부분 객체가 전체 객체와 독립적으로 존재할 수 있다
  2. 전체 객체가 삭제되면 부분 객체도 함께 삭제된다
  3. 약한 포함 관계이다
  4. 흰색 마름모로 표현된다

Q22. 다음 중 그래프에서 사이클(Cycle)이 없는 연결 그래프는?

  1. 완전 그래프
  2. 방향 그래프
  3. 트리
  4. 가중치 그래프

Q23. 퀵 정렬에서 최악의 경우가 발생하는 조건은?

  1. 배열이 완전히 무작위일 때
  2. 이미 정렬된 배열에서 맨 끝 요소를 피벗으로 선택할 때
  3. 배열의 중간 요소를 피벗으로 선택할 때
  4. 배열의 크기가 홀수일 때

Q24. 소프트웨어 개발 방법론 중 요구사항이 자주 변경되는 프로젝트에 가장 적합한 것은?

  1. 폭포수 모델
  2. 나선형 모델
  3. 애자일(스크럼)
  4. V 모델

Q25. 다음 코드 커버리지 중 가장 강한 기준은?

  1. 구문(Statement) 커버리지
  2. 결정(Decision) 커버리지
  3. 조건(Condition) 커버리지
  4. MC/DC 커버리지

복합 문제

Q26. 다음 상황에서 가장 적합한 자료구조와 알고리즘의 조합은?

웹 브라우저의 "뒤로 가기" 기능을 구현하려 한다. 최근 방문한 페이지로 돌아가야 하며, 방문 기록은 순서대로 쌓인다.

  1. 큐 + BFS
  2. 스택 + DFS
  3. 힙 + 다익스트라
  4. 해시 테이블 + 이진 탐색

Q27. 다음 설명에서 위반된 SOLID 원칙과 적용해야 할 디자인 패턴을 바르게 연결한 것은?

결제 시스템에서 신용카드, 카카오페이, 토스 결제 방식을 모두 하나의 클래스에서 if-else로 처리하고 있다. 새 결제 수단 추가 시마다 이 클래스를 수정해야 한다.

  1. SRP 위반 — 싱글톤 패턴
  2. OCP 위반 — 전략(Strategy) 패턴
  3. LSP 위반 — 옵저버(Observer) 패턴
  4. ISP 위반 — 팩토리(Factory) 패턴

Q28. DFS와 BFS를 비교한 설명으로 옳은 것은?

  1. DFS는 큐를 사용하고, BFS는 스택을 사용한다
  2. BFS는 최단 경로 탐색에 적합하고, DFS는 스택(재귀)을 사용한다
  3. DFS는 항상 BFS보다 빠르다
  4. BFS는 메모리를 적게 사용한다

Q29. 다음 중 소프트웨어 테스트와 개발 방법론의 관계로 옳은 것은?

  1. 폭포수 모델에서는 테스트를 개발과 동시에 수행한다
  2. TDD(테스트 주도 개발)는 코드 작성 후 테스트를 작성한다
  3. 애자일에서는 스프린트마다 테스트를 수행한다
  4. 인수 테스트는 개발자가 단독으로 수행한다

Q30. 다음 조건을 모두 만족하는 자료구조는?

  • 삽입/삭제: O(log n)
  • 최댓값 또는 최솟값 조회: O(1)
  • 완전 이진 트리 기반
  1. 이진 탐색 트리(BST)
  2. AVL 트리
  3. 힙(Heap)
  4. 해시 테이블

정답

번호 정답 해설
Q1 4 퀵 정렬은 불안정 정렬 (버블·삽입·병합은 안정 정렬)
Q2 2 중간값 5 → 9>5 오른쪽 → 중간값 9 → 일치 (2회)
Q3 3 병합 정렬은 항상 O(n log n) / 퀵 정렬 최악은 O(n²)
Q4 2 다익스트라는 음수 가중치 처리 불가 (벨만-포드가 가능)
Q5 2 스택은 LIFO (큐는 FIFO)
Q6 2 높이 h의 완전 이진 트리 최대 노드 = 2^(h+1)-1. h=3이면 15개 → 높이 3, 레벨 수 4
Q7 4 체이닝은 분리 연결법으로 개방 주소법과 다른 방식
Q8 4 "계약 협상보다 고객과의 협력" 이 맞는 표현
Q9 3 제품 백로그 관리는 PO의 역할
Q10 3 기본 경로 테스트는 화이트박스 테스트 기법
Q11 2 OCP(Open-Closed Principle): 확장에 열림, 변경에 닫힘
Q12 3 싱글톤·팩토리·빌더·프로토타입·추상팩토리 → 생성 패턴
Q13 3 Java 7 이하 인터페이스는 추상 메서드만 가능 (Java 8부터 default 메서드 허용)
Q14 4 플로이드-워셜: 모든 쌍 최단경로 → O(n³)
Q15 2 최소 힙: 루트가 항상 최솟값 → O(1) 조회
Q16 3 연결 리스트 중간 삽입: 탐색 O(n) + 삽입 O(1) = 전체 O(n)
Q17 3 유스케이스 다이어그램: 사용자(Actor)와 기능(UseCase) 관계
Q18 3 옵저버는 행동 패턴 / 싱글톤=생성 / 어댑터=구조 / 빌더=생성
Q19 4 회귀 테스트: 변경 후 기존 기능 정상 동작 확인
Q20 2 다형성: 같은 인터페이스로 다른 객체 처리
Q21 2 합성(Composition): 강한 포함 — 전체 삭제 시 부분도 삭제
Q22 3 트리 = 사이클 없는 연결 그래프, 노드 n개, 간선 n-1개
Q23 2 이미 정렬된 배열 + 맨 끝 피벗 → 매번 n-1개 비교 → O(n²)
Q24 3 애자일: 변화 대응에 최적화 / 폭포수: 요구사항 고정 시 적합
Q25 4 MC/DC: 항공·의료 분야 최고 강도 기준
Q26 2 뒤로 가기 = LIFO → 스택 / 탐색 방식은 DFS
Q27 2 OCP 위반: 새 기능 추가 시 기존 코드 수정 필요 → 전략 패턴으로 해결
Q28 2 BFS=큐+최단경로, DFS=스택(재귀)
Q29 3 애자일: 각 스프린트마다 테스트 포함 (TDD는 코드 전에 테스트 작성)
Q30 3 힙: 삽입/삭제 O(log n), 최대/최소 O(1), 완전 이진 트리