Stack(스택) 1. LIFO(후입선출) - 가장 나중에 들어온 값이 가장 먼저 나오는 구조 2. 스택이 사용되는 곳 가. 함수의 콜 스택 나. 연산자 후위 표기법 다. 시스템 스택 라. 뒤로가기 버튼 3. 스택이 가지고 있는 함수 가. push(): 데이터를 넣는다. 나. pop(): 데이터를 꺼낸다. 다. isEmpty(): 스택이 비어있는지 확인한다. 라. isFull(): 스택이 꽉 차있는지 확인한다. 4. 스택포인터 가. push(), pop()을 할 때 해당 위치를 알고 있어야 하므로, 해당위치를 기억하고 있는 포인터 나. 스택 포인터의 초기화 값은 -1 Queue(큐) 1. FIFO(선입 선출) - 가장 먼저 들어온 값이 가장 먼저 나오는 구조 2. 큐가 사용되는 곳 가. 이벤트 큐 나. ..
패러다임 발전과정 순차적 프로그래밍 - 말 그래도 순차적으로 코딩해 나가는 방법이다. - 필요한 것이 있으면 계속 순서대로 추가해가며 구현하는 방식이다. 문제점: 점점 규모가 커지게 되면 나중에 어떻게 코드가 연결되어 있는지 확인조차 하지 못하게 될 가능성이 존재한다. " 코딩보다 흐름을 이해하는 데 시간을 다 소비할 가능성이 크다 " 절차적, 구조적 프로그래밍 - 반복될 가능성이 있는 것들을 재상요이 가능한 함수로 만들어 사용하는 방법이다. - 절차는 함수를 뜻하고, 구조는 모듈을 뜻한다. 문제점: 너무 추상적이다. 함수는 논리적 단위로 표현되지만, 실제 데이터에 해당하는 변수나 상수 값들은 물리적 요소로 되어있기 때문이다. 즉 논리적, 물리적 단위를 함께 묶을 수 있는 방법이 필요하게 된다. 객체 지..
등장배경 - 초기 소프트웨어 개발 방법은 계획 중심의 프로세스 ex) 도시 계획으로 건축에서 사용하는 방법과 유사하며, 이런 프로세스를 활용하는 프로젝트가 대부분 - 90년대 이후, 소프트웨어 분야가 넓어지면서 사용자들이 '일반 대중들'로 바뀌기 시작했고, 이로 인해 트렌드가 급격하게 빨리 변화하는 시대로 점차 바뀌어 나감. - 이로 인해 제품 수명이 짧아지고, SW 개발의 불확실성이 높아지면서, 새로운 개발 방법이 등장하기 시작했다. " 규칙을 적게 만들고, 가볍게 대응을 잘하는 방법을 적용하자 " - 경량 방법론 주의자들은 일단 해보고, 고쳐나가는 방식으로 개발하자는 방법이 팽배하기 시작했다. " 애자일 방법론 " 애자일 방법론 1. 애자일에서는 협력과 피드백을 더 자주하고 잘하는 것을 강조한다. 가..
Array(배열) - Index로 빠르게 값을 찾는 것이 가능하다. - 배열을 선언할 때 크기와 데이터 타입을 지정해주어야 하기때문에, 만약 계속 데이터가 늘어나는 경우가 발생하거나, 최대 사이즈를 알 수 없는 경우에는 적합한 자료구조 선택이 아니다. -> 이런 단점을 보완하고자 List가 등장하였다. - Index가 중요하다. - 중간에 데이터를 삽입하거나 삭제할때도 굉장히 비 효울적이다. (비용이 많이 듬) -> 이런 단점을 보완하고자 List가 등장하였다. ArrayList - 배열처럼 선언할때 크기와 데이터 타입을 지정해주지 않아 된다. - 데이터를 찾는데 빠르게 찾을 수 있지만, 중간에 데이터를 추가 및 삭제할때 시간이 오래 걸림 ->이런 단점을 보완하고자 LikedList가 등장하였다. - 순..