복잡도: 알고리즘의 성능을 나타내는 척도.시간 복잡도: 알고리즘을 위해 필요한 연산의 횟수공간 복잡도: 알고리즘을 위해 필요한 메모리의 양
현재 상황에서 지금 당장 좋은 것만 고르며 문제를 푸는 알고리즘.현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다.기준에 따라 좋은 것을 선택하는 알고리즘이므로 문제에서 '가장 큰 순서대로', '가장 작은 순서대로'와 같은 기준을 제시한다.대체로 정렬 알고리즘
이것이 취업을 위한 코딩 테스트다 with pythongithub
이것이 취업을 위한 코딩 테스트다 with pythongithub
이것이 취업을 위한 코딩 테스트다 with pythongithub
난이도: 하시간 제한:1초메모리 제한: 128mb어떠한 수 n이 1이 될 때까지 다음의 두 과정 중 하나를 반복적으로 선택하여 수행하려고 한다.단, 두 번째 연산은 n이 k로 나누어떨어질 때만 선택할 수 있다.n에서 1을 뺀다.n을 k로 나눈다.n과 k가 주어질 때,
머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정풀이를 떠올리는 것은 쉽지만 소스코드로 구현하는것이 어려움.보통 문제의 길이가 길며, 사소한 입출력 조건등을 문제에서 제시함.문자열, 정수등의 처리에 까다로운 편이 대다수이며 따라서 파이썬이 제일 유리함.반복문을 많이 사용
난이도: 하시간 제한: 1초메모리 제한: 128mb여행가는 n \* n 크기의 정사각형 공간 위에 서 있다.이 공간은 1 \* 1 크기의 정사각형으로 나누어져 있다.가장 왼쪽 위 좌표는 (1, 1)이며, 가장 오른쪽 아래 좌표는 (n, n)이다.여행가는 상, 하, 좌,
그래프를 탐색하기 위한 대표적인 두 가지 알고리즘많은 양의 데이터 중에서 원하는 데이터를 찾는 과정DFS/BFS를 제대로 이해하려면 스택, 큐, 재귀 함수 에 대한 이해가 전제되어야 한다.삽입(push): 데이터를 삽입한다.삭제(pop): 데이터를 삭제한다.오버플로:
선입후출 (first in last out)구조파이썬에서 스택을 구현할 때는 별도의 라이브러리를 사용할 필요가 없다.list에서 append와 pop 함수를 사용하면 구현할 수 있다.스택 자료구조 알고리즘은 상당수 재귀 함수를 이용해서 구현할 수 있다.
터널과 같은 구조선입선출 (first in first out)구조.파이썬으로 큐를 구현할 때는 collections 모듈에서 제공하는 deque 자료구조를 활용하자!!deque 객체를 리스트 자료형으로 변경하고자 한다면 list() 메서드를 이용해라ex) list(qu
자기 자신을 다시 호출하는 함수재귀 함수를 사용할 때는 꼭 종료 조건을 제시해야 한다.재귀 함수는 컴퓨터 구조 측면에서 보았을 때, 스택 자료구조와 동일하다.이것이 취업을 위한 코딩 테스트다 with pythongithub
노드(node)와 간선(edge)으로 표현되며 이때 노드를 정점(vertex)라고도 말한다.그래프 탐색: 하나의 노드를 시작으로 다수의 노드를 방문하는 것두 노드가 간선으로 연결되어 있다면 두 노드는 인접하다(adjacent)라고 표현한다.프로그래밍에서 그래프는 크게
depth-first-search의 약자dfs 알고리즘을 이해할려면 그래프, 스택, 큐, 재귀 함수를 우선적으로 이해해야 한다.깊이 우선 탐색이라고도 부르며 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘.특정한 경로로 탐새갛다가 특정한 상황에서 최대한 깊숙이 들어
난이도: 중시간 제한: 1초메모리 제한: 128mbn\*m 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다.구멍이 뚫려 있는 부분끼리 상, 하, 좌, 우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다.이 때, 얼음
breadth first sesarch의 약자너비 우선 탐색을 뜻하며 가까운 노드부터 탐색하는 알고리즘이다.BFS는 큐 자료구조를 이용하는 것이 정석이다.BFS의 동작 방식은 아래와 같다.1) 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다.2) 큐에서 노드를 꺼내
난이도: 중시간 제한: 1초메모리 제한: 128mb동빈이는 n\*m 크기의 직사각형 형태의 미로에 갇혀있다.동빈이의 위치는 (1, 1)이고 미로의 출구는 (n, m)의 위치에 존재하며 한 번에 한 칸씩 이동할 수 있다.이 때 괴물이 있는 부분은 0, 괴물이 없는 부분은
inserting sort의 약자.선택 정렬에 비해 실행 시간 측면에서 더 효율적이다.데이터가 거의 정렬되어 있을 때 효율적이다.특정한 데이터를 적절한 위치에 삽입한다는 의미이다.삽입 정렬은 두 번째 데이터부터 시작하며 첫 번째 데이터는 그 자체로 정렬되어 있다고 판단
기준을 설정한 다음 큰 수와 작은 수를 교환한 후 리스트를 반으로 나누는 방식으로 동작.큰 숫자와 작은 수를 교환할 때, 피벗(pivot)을 사용한다.퀵 정렬을 수행하기 전에는 피벗을 어떻게 설정할 것인지를 생각해야 한다.대개 분할(divide) 혹은 파티션(parti
count sort데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을 때만 사용 가능가장 큰 데이터와 가장 작은 데이터의 차이가 너무 크다면 계수 정렬은 사용할 수 없다.일반적으로 max와 min의 차이가 1,000,000을 넘지 않을 때, 효과적으로 사용할 수
sorted()는 퀵 정렬과 동작 방식이 비슷한 병합 정렬을 기반으로 만들어졌다.병합 정렬은 일반적으로 퀵 정렬보다 느리지만 최악의 경우에도 O(N\*logN)을 보장한다.문제에서 별도의 요구가 없다면 기본 정렬 라이브러리를 사용하고, 데이터의 범위가 한정되어 있으며
난이도: 하시간 제한: 2초메모리 제한: 128mb첫 번째 줄에 n, k가 공백으로 구분되어 입력된다.두 번째 줄에 배열 a의 원소들이 공백으로 구분되어 입력된다. 모든 원소는 자연수이다.세 번째 줄에 배열 b의 원소들이 공백으로 구분되어 입력된다. 모든 원소는 자연수
가장 기본적인 탐색 방법이다.리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법.보통 정렬되지 않은 리스트에서 데이터를 찾아야 할 때 사용한다.리스트 내에 데이터가 아무리 많아도 시간만 충분하다면 항상 원하느 원소(data)를 찾을 수
binary search (반으로 쪼개면서 탐색하기)배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있다. 데이터가 무작위일때는 사용할 수 없다.탐색 범위를 절반씩 좁히면서 데이터를 탐색하는 특징이 있다.이진 탐색은 변수 3개를 사용하여 구현하는데 변수는 시작점, 끝
데이터베이스는 내부적으로 대용량 데이터 처리에 적합한 트리 자료구조를 이용하여 항상 데이터가 정렬되어 있다.트리 자료구조는 노드와 노드의 연결로 표현하며 노드는 어떠한 정보를 가지고 있는 개체로 이해할 수 있다.트리 자료구조는 그래프 자료구조의 일종으로 많은 양의 데이
Dynamic Programing, 동적 계획법이라고도 표현한다.한 번 계산한 문제는 다시 계산하지 않도록 중복된는 연산을 줄이는 알고리즘이다.대표적인 예로 피보나치 수열 문제가 있다.피보나치 수열 문제를 재귀 함수로 구현하면 n이 작을 땐, 상관이 없지만 n이 높으면
난이도: 중시간 제한: 1초메모리 제한: 128mb정수 x가 주어질 때 정수 x에 사용할 수 있는 연산은 다음과 같이 4가지이다.1) x가 5로 나누어떨어지면, 5로 나눈다.2) x가 3으로 나누어 떨어지면, 3으로 나눈다.3) x가 2로 나누어 떨어지면, 2로 나눈다
난이도: 중상시간 제한: 1초메모리 제한: 128mb개미 전사는 식량창고를 공격하려하며 식량창고는 일직선으로 이어져있다.식량창고 중에서 서로 인접한 식량창고가 공격을 받으면 바로 들킨다.따라서 들키지 않으려면 최소한 한 칸 이상 떨어진 식량 창고를 약탈해야 한다.첫째
난이도: 중시간 제한: 1초메모리 제한: 128mb가로의 길이가 n, 세로의 길이가 2인 직사각형 형태의 얇은 바닥이 있다.이 얇은 바닥을 12 덮개, 21 덮개, 2\*2 덮개를 이용해 채우려고 한다.바닥을 채우는 모든 경우의 수를 구하는 프로그램을 작성하라.첫째 줄
다익스트라, dijkstra그래프에서 여러 개의 노드가 있을 때, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구하는 알고리즘.음의 간선이 없을 때, 정상적으로 동작한다.음의 간선이란 0보다 작은 값을 가지는 간선을 의미.현실 세계의 길(간선)은 음의
Disjoint Sets이란 공통 원소가 없는 두 집합을 의미.서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조union(합집합), find(찾기) 2개의 연산으로 나뉨.union: 2개의 원소가 포함된 집합을 하나의 집합으로 합치는 연산find:
spaning tree하나의 그래프가 있을 때 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프를 의미신장 트리 중에서 최소 비용으로 만들 수 있는 신장트리를 찾는 알고리즘을 최소 신장 트리 알고리즘이라 부른다.대표적인 최소 신장 트리 알고리즘으로는 크루스칼(
특정한 프로그래밍 언어에서 자주 사용되는 표준 소스코드를 미리 구현해 놓은 라이브러리를 의미.코딩 테스트를 위해 반드시 알아야 하는 라이브러리는 대략 6가지 정도이며 아래와 같다.내장 함수: 기본 내장 라이브러리이다.itertools: python에서 반복되는 형태의
topology sort정렬 알고리즘의 일종순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용방향 그래프의 모든 노드를 방향성에 거스르지 않도록 순서대로 나열하는 것대표적인 예시로는 선소과목을 고려한 학습 순서 설정이 있다.위상 정렬 알고리즘을 이해할려면
내 풀이 답안 풀이 출처 & 깃허브 이것이 취업을 위한 코딩 테스트다 with python github
이것이 취업을 위한 코딩 테스트다 with pythongithub
boj 1439이것이 취업을 위한 코딩 테스트다 with pythongithub
이것이 취업을 위한 코딩 테스트다 with pythongithub
코드 출처 & 깃허브 programmers 무지의 먹방 라이브 이것이 취업을 위한 코딩 테스트다 with python github
이것이 취업을 위한 코딩 테스트다 with pythongithub
BOJ 18406이것이 취업을 위한 코딩 테스트다 with pythongithub
문자열의 길이가 1000이하이기 때문에 가능한 모든 경우의 수를 탐색하는 완전 탐색을 수행할 수 있다.
문제 코드 출처 & 깃허브 programmers 자물쇠와 열쇠 이것이 취업을 위한 코딩 테스트다 with python github
정해진 목적에 따라서 동작하는 완성된 프로그램을 개발하는 것을 요구client정보를 요청하는 측이 클라이언트이고 요청을 받아 응답하는 측이 서버Request(요청): 클라이언트가 서버로 데이터를 보내는 것웹 클라이언트 -(요청)> 웹 서버웹 서버 -(응답)> 웹 클라이
HTTP(HyperText Transfer Protocol): 웹상에서 데이터를 주고받기 위한 프로토콜.이것이 취업을 위한 코딩 테스트다 with pythongithub
REST(Representational State Transfer): 각 자원에 대하여 자원의 상태에 대한 정보를 주고받는 개발방식API: 프로그램이 상호작용하기 위한 인터페이스서버와 클라이언트가 상호작용을 하려면 이를 연결하는 인터페이스가 필요한데 이러한 인터페이스를