자료구조1

dragonappear·2020년 12월 31일
0

Algorithm

목록 보기
1/5

스택(LIFO구조)

뭔가가 순차적으로 추가되는데 마지막에 있는것만 의미가 있는것이면 스택을 생각해보자
중간부분을 삭제해야할경우가 발생하면 스택을 사용하면 안되는데 사용한경우이다.
push,pop 시간복잡도= 1

스택의 사용예:

  1. 순서뒤집기(https://www.acmicpc.net/problem/9093)
  2. 괄호 (https://www.acmicpc.net/problem/9012)
    -닫는괄호의 앞에있는여는괄호
    -다른 여는괄호와 짝 x
    -가장 가까운 여는괄호
    위 세조건을 만족해야 짝이다.
  3. 스택수열(https://www.acmicpc.net/problem/1874)
  4. 에디터(https://www.acmicpc.net/problem/1406)
    -링크드리스트를 사용할수도있다(어떤 특정위치에 있는 원소를 삽입삭제할때 용이함)

큐(FIFO구조)

어떠한 자료들을 순서대로 처리할때 사용된다.(주로BFS알고리즘)
push,pop 시간복잡도= 1

큐의 예:

  1. 조세퍼스(https://www.acmicpc.net/problem/1158)

덱(FIFO구조)

양쪽끝에서 PUSH,POP연산을 사용할수있다.(주로BFS알고리즘)
push,pop 시간복잡도= 1

  1. int x;
    string str;
    cin >> x;
    cin.ignore(); // 개행문자 무시하고 처음부터 입력받을때
    getline(cin.str); // 한줄전체를 str에 입력받음 (개행문자받기전까지)
    cin.ignore()이 없으면 cin >> x;에서 x 뒤에 개행문자를 입력받지 않기 떄문에 str에 '\n'이 입력된다.
    문제풀때: 문제분석+시간복잡도분석+어떤개념쓰였는지 정리하면서 풀기!

자료구조문제 연습(주로 stack문제)

  1. 단어뒤집기(https://www.acmicpc.net/problem/17413)
  2. 쇠막대기(https://www.acmicpc.net/problem/10799)
  3. 오큰수(https://www.acmicpc.net/problem/17298)
  4. 오등큰수(https://www.acmicpc.net/problem/17299)

0개의 댓글