이번주 스터디 진행방식 : N과 M 문제를 아무 힌트없이 풀어본다 ( 5분 ) 1차 힌트 및 접근법을 제공받고 다시 시도해본다 ( 10분 ) 2차 힌트 및 접근법을 제공받고 다시 시도해본다 ( 10분 )
시작하는 칸을 큐에넣고 방문했다는 표시를 남김큐에서 원소를 꺼내고, 그 칸에 상하좌우로 인접한 칸에 대해 3번을 진행3-1. 해당 칸을 처음 방문한다면 => 방문했다는 표시를 남기고, 해당 칸을 큐에 삽입3-2. 이전에 이미 방문한 칸이라면 => 아무것도 하지 않음큐가
양쪽 끝에서 삽입, 삭제 모두 가능함원소추가 : O(1)원소제거 : O(1)가장 앞/뒤 원소 확인 : O(1)가장 앞/뒤가 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능=> STL queue 에서는 인덱스로 원소에 접근이 가능STL vector 에서 제공되는 기능
FIFO원소추가 : O(1)원소제거 : O(1)제일 앞/뒤의 원소 확인 : O(1)제일 앞/뒤가 아닌 나머지 원소들의 확인/변경이 원칙적으로 불가능배열로 구현 가능head 나 tail 이 끝 인덱스를 가리키는 상태에서 0번지로 다시 오도록 구현선형 배열로 구현한 큐 :
주어진 괄호 문자열이 올바른지 판단하는 문제스택을 활용한 방법여는 괄호가 등장하면 스택에 저장한다저장하다가, 닫는 괄호가 등장하면 스택에 가장 최근에 들어온 여는 괄호와 짝을 이룰 수 있는지 판단한다.스택에 가장 최근에 들어온 여는 괄호를 제거한다위 과정을 반복한다여는
싱글리 (단일)더블리 (이중)서큘러 (원형)k번쨰 원소의 접근 : O(1) / O(k)임의 위치에 원소 추가 제거 : O(n) / O(1)메모리 상의 배치 : 연속 / 불연속추가적으로 필요한 공간(Overhead) : x / O(n) => 싱글리 : 다음원소의 주소,
Abstract Data Type (추상자료형)특정 데이터들을 저장 및 조작하는 방식에 대한 "명세서"우리는 추상 자료형을 어떻게든 구현하던간에 상관없다!종류 : 배열 ADT, 링크드리스트 ADT, 스택 ADT, 큐 ADT, ....배열 ADT 는 어떻게 구현하던 상관
컴퓨터의 연산처리 컴퓨터는 1초에 3~5억개의 연산을 처리 가능 => 문제에서 제한시간이 1초이다? 이 말은 곧 "당신이 설계한 코드, 즉 프로그램은 3~5억번의 연산 안에 답을 도출해내고 종료되어야 한다." 라는 것이다. 그런데 이렇게 3~5억 번의 연산안에 설
삼성전자 SW 역량테스트카카오네이버라인배민NHNSK 하이닉스C++, Python, JAVA동작 속도가 압도적으로 빠르다. (코스포스 랭킹 상위 티어인 분들은 압도적으로 c++ 을 사용)같은 시간복잡도로 설계한 문제임에도 불구하고, 파이썬과 자바로 풀었을 때 시간초과가