묻공러
[코테 합격자 되기] 06/07장 스택과 큐
묻공러
묻지마공부
묻공러
전체
오늘
어제
  • 분류 전체보기 (521) N
    • C (54)
      • [코드조선] C 핵심 (35)
      • [언어본색] C 기초 (19)
    • C++ (72)
      • [루키스] C++ (9)
      • [루키스] 콜백함수 (6)
      • [루키스] STL (8)
      • [루키스] Modern C++ (11)
      • [노코프] C++ (10)
      • [노코프] Tips (16)
      • [일지] C++ (12)
    • C# (20) N
      • [루키스] C# (9)
      • [루키스] 자료구조 (3) N
      • [루키스] 실전 문법 (8) N
    • 자료구조 & 알고리즘 (50)
      • [코드조선] C 자료구조 & 알고리즘 (6)
      • [합격자되기] C++ 코딩테스트 (12)
      • [루키스] C++ 자료구조 & 알고리즘 (32)
    • CS (69)
      • [널널한 개발자] CS 개론 (19)
      • [혼자 공부하는] 컴퓨터 구조 (16)
      • [혼자 공부하는] 운영체제 (18)
      • [널널한 개발자] 네트워크 (16)
    • 게임 그래픽스 (46)
      • [전북대] OpenGL (25)
      • [일지] DirectX (21)
    • 게임 엔진 - 언리얼 (123)
      • [코드조선] 언리얼 (53)
      • [코드조선] 언리얼 데디서버 (8)
      • [일지] 언리얼 (59)
      • [일지] 언리얼 (2) (3)
    • 게임 엔진 - 유니티 (14) N
      • [최적화] 유니티 (4)
      • [루키스] 유니티 (10) N
    • 게임 서버 (17)
    • 게임 수학 & 물리 (19)
      • 게임 수학 (12)
      • 게임 물리 (7)
    • GIT & GITHUB (4)
    • 영어 (18)
      • [The Outfit] 대본 공부 (11)
      • the others (7)
    • 그 외 (14)
      • In (5)
      • Out (5)
      • Review (4)

인기 글

최근 글

hELLO · Designed By 정상우.
자료구조 & 알고리즘/[합격자되기] C++ 코딩테스트

[코테 합격자 되기] 06/07장 스택과 큐

2024. 11. 19. 10:46

# 스택

- 스택의 개념

LIFO(Last In First Out)

가장 최근에 들어온 원소가 가장 먼저 나오는 자료구조

 

- 스택을 언제 써야 하는가?

가장 최근에 들어온 원소를 활용해야 하거나

가장 최근에 들어온 원소 순서대로 활용해야 하는 경우에 스택을 써야 한다

 

- ADT?

ADT(Abstract Data Type)는 추상 데이터 타입의 약어로

세부 사항을 숨기고 사용자에게 필요한 기능만 명시한 것이다

 

- 스택의 ADT

 

참고 코드:

https://github.com/dremdeveloper/codingtest_cpp/blob/main/STL/stack.cpp

 

- 스택의 예시

1) 함수 호출

 

2) 이전 페이지로 가기

 

3) 괄호 짝 맞추기

해당 문제의 경우에

닫힌 괄호를 가장 최근의 열린 괄호와 매칭하는 것이 핵심이다

참고 코드: https://github.com/dremdeveloper/codingtest_cpp/blob/main/Algorithm_with_DataStructure/parenthesesBalanced.cpp

 


 

# 큐

- 큐의 개념

FIFO(First In First Out)

가장 먼저 들어간 원소가 가장 먼저 나오는 자료구조

 

- 큐의 ADT

front는 가장 먼저 들어온 원소

rear는 가장 최근에 들어온 원소

 

참고 코드:

https://github.com/dremdeveloper/codingtest_cpp/blob/main/STL/queue.cpp

 

- 큐의 예시

1) 줄 서기

 

2) 요세푸스 문제

 

해당 문제는 큐를 활용하여

제거할 인원은 pop 하고

제거하지 않을 인원은 뒤로 push를 하여 순환되는 느낌을 만드는 것이 핵심이다

 

K가 2라는 가정하에

아래와 같이 동작하고 O(N * K)의 시간복잡도를 가진다

 

참고 코드:

https://github.com/dremdeveloper/codingtest_cpp/blob/main/Algorithm_with_DataStructure/queue_josephuse.cpp

 

# 정리

스택은

"가장 최근 원소"

DFS, 백트래킹에서 활용

 

큐는

"들어온 순서대로 나가"고 "순환"하도록 구현할 수도 있다

BFS에서 활용

저작자표시 비영리 변경금지 (새창열림)

'자료구조 & 알고리즘 > [합격자되기] C++ 코딩테스트' 카테고리의 다른 글

[코테 합격자 되기] 09장 트리  (0) 2024.12.13
[코테 합격자 되기] 08장 해시  (0) 2024.12.12
[코테 합격자 되기] 04/05장 반드시 알아야 할 C++ 문법  (0) 2024.11.15
[코테 합격자 되기] 03장. 시간 복잡도  (0) 2024.11.14
[코테 합격자 되기] 00/01장 효율적으로 공부하기  (0) 2024.11.14
'자료구조 & 알고리즘/[합격자되기] C++ 코딩테스트' 카테고리의 다른 글
  • [코테 합격자 되기] 09장 트리
  • [코테 합격자 되기] 08장 해시
  • [코테 합격자 되기] 04/05장 반드시 알아야 할 C++ 문법
  • [코테 합격자 되기] 03장. 시간 복잡도
묻공러
묻공러
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.