입력으로 들어오는 데이터의 크기프로그램이 동작하는 하드웨어의 성능프로그램을 실행하고 관리하는 운영 체제의 성능프로그램을 빌드하는 컴파일러의 성능비동기 로직...➡️ 이러한 다양한 요인이 프로그램의 성능과 실행 시간을 결정하므로, 프로그램의 성능을 정확하게 파악하는 것은
소수 : 1과 자기 자신만을 약수로 가지는 수 2, 3, 5, 7, 11, 13, 17, 19 ... 기본적인 풀이 자기 자신보다 작은 숫자(i)로 모두 나누어 봤을 때, 나누어 떨어지는 수가 있다면, 소수가 아니다. 나누어 떨어지는 숫자가 없다면, 소수이다. 모든
: 컴퓨터 프로그램이 동일한 계산을 반복적으로 해야할 때, 이전에 계산한 값을 메모리에 저장하여 중복적인 계산을 제거하여 전체적인 실행속도를 빠르게 해주는 기법동적 계획법(DP; Dynamic Programming)의 핵심이 되는 기술이다.: 크기가 크거나 복잡한 문제
배열에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거한 배열을 리턴해야 한다.이때 배열의 원소의 순서를 유지해야 한다.배열의 크기 : 1,000,000 이하의 자연수배열의 각 원소 : 0 ~ 9의 정수\[1, 1, 3, 3, 0, 1, 1] → 1, 3, 0,
: 올바른 괄호란 (로 열려서 )로 닫혀야 한다는 뜻입력값은 문자열이며 ( 또는 ) 로만 이루어져 있다.입력값의 길이는 100,000 이하의 자연수()(), (())() → true)()(, (()( → false이 문제는 스택(Stack) 문제이다.만약 입력값이 ((
: 오름차순으로 정렬된 숫자 배열에서 검색 범위를 1 / 2씩 줄여가며 원하는 데이터를 검색하는 알고리즘정렬된 배열과 찾고자하는 데이터를 입력하면, 해당 데이터의 index를 리턴한다.배열에 찾고자하는 데이터가 존재하지 않으면 -1 을 리턴한다.
각 기능은 진도가 100%일 때 배포될 수 있다.하지만 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발되어도, 앞에 있는 기능이 배포될 때 함께 배포된다.progresses : 배포되어야 하는 순서대로 작업의 진도(%)가 적힌 배열speeds : 각 작업의 개발 속도가
버블 정렬 (Bubble Sort) : 서로 인접한 두 요소를 검사하여 정렬하는 방법 정렬이 이루어지는 방식이 '마치 거품이 밀려 올라가는 모습'과 같아서 bubble sort라고 부른다. 더 이상의 스왑(swap)이 일어나지 않을 때, 배열이 정렬된 것이다. 입출
선택 정렬 (Selection Sort) : 선택한 요소와, 나머지 요소 중 가장 작은 요소를 교환하는 정렬 알고리즘 이중 반복문을 사용하며, 바깥 반복문은 i번 순회, 안쪽 반복문은 j번 순회한다. (이때 j는 i를 제외하고, i + 1부터 시작한다.) j번 순회
삽입 정렬 (Insertion Sort) : 선택한 요소를 삽입할 수 있는 위치를 찾아 삽입하는 방식의 정렬 알고리즘 의사 코드 풀이 >삽입 정렬은 O(n²)의 시간복잡도를 가진다.
문제 : 중요도가 높은 문서를 먼저 인쇄하는 프린터가 있다. 이 프린터의 작동 과정 인쇄 대기목록 가장 앞에 있는 문서(J)를 대기목록에서 꺼낸다. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면, J를 대기목록의 가장 마지막에 넣는다. 그렇지
: 다른 요소와 비교를 통해 정렬하는 방식버블 정렬선택 정렬삽입 정렬➡️ 시간 복잡도 O(n²): 요소를 분산하여 정렬하는 방식병합 정렬퀵 정렬힙 정렬➡️ 시간 복잡도 O(n log n): 문제를 작은 2개의 문제로 분리하고, 더 이상 분리가 불가능할 때 처리한 후 합
: 분할 정복 알고리즘을 이용한 매우 빠르지만 최악의 경우에는 이차 시간 O(n²)이 소요될 수도 있는 불안정 정렬마지막 요소가 Pivot이 된다. Pivot을 기준으로 Pivot보다 작으면 좌측, Pivot보다 크면 우측으로 나눈다. → 분할나뉜 요소에서 다시 마지막
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 1
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.행렬 arr1, arr2의 행과 열의 길이는 500을 넘
1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고
오래전 유행했던 콜라 문제가 있습니다. 콜라 문제의 지문은 다음과 같습니다.정답은 아무에게도 말하지 마세요.콜라 빈 병 2개를 가져다주면 콜라 1병을 주는 마트가 있다. 빈 병 20개를 가져다주면 몇 병을 받을 수 있는가?단, 보유 중인 빈 병이 2개 미만이면, 콜라를
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,F
n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다.처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 명만 심사를 할 수 있습니다. 가장 앞에 서 있는 사람은 비어 있는 심사대로 가서 심사
n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다.노드의 개수 n, 간선에
에라토스테네스의 체(Sieve of Eratosthenes)는 가장 대표적인 소수 판별 알고리즘이다. 2부터 시작하여 2의 배수를 모두 삭제하고, 3의 배수를 모두 삭제, (4는 2의 배수이므로 이미 삭제되었으므로), 그다음 5의 배수를 모두 삭제.. 이렇게 해당 수
: 매 선택에서 지금 이 순간 가장 최적인 답을 선택하는 알고리즘으로 최적의 해를 보장해주지 않는다.A 정점에서 F 정점까지 가는 방법을 찾을 때, A → B 가 A → D 보다 비용이 낮으므로 B 정점으로 가는 방법을 선택한다.A → B → C → F 경로는 이동거리
피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다.예를들어F(2) = F(0) + F(1) = 0 + 1 = 1F(3) = F(1) + F(2) = 1 + 1 = 2F(4) =
문제 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면
포털 다음에서 검색어 자동완성 기능을 넣고 싶은 라이언은 한 번 입력된 문자열을 학습해서 다음 입력 때 활용하고 싶어 졌다. 예를 들어, go 가 한 번 입력되었다면, 다음 사용자는 g 만 입력해도 go를 추천해주므로 o를 입력할 필요가 없어진다! 단, 학습에 사용된
다이나믹 프로그래밍 : 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 향상시키는 방법 이미 계산된 결과(작은 문제)는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 한다. 즉, 한 번 해결한 문제는 다시 해결하지 않는다. (효율성 ↑) 완전 탐색을 이용했
문제 단어 퍼즐은 주어진 단어 조각들을 이용해서 주어진 문장을 완성하는 퍼즐입니다. 이때, 주어진 각 단어 조각들은 각각 무한개씩 있다고 가정합니다. 예를 들어 주어진 단어 조각이 [ba, na, n, a]인 경우 ba, na, n, a 단어 조각이 각각 무한개씩 있습
1차원 배열 문제나 문자열 문제에서 많이 사용한다.한 배열에서 부분 배열을 다루거나, 한 배열에서 각각 다른 위치에 있는 두 개의 원소의 값을 가지고 계산할 때 사용한다.1차원 배열에서 각자 다른 원소를 가리키는 2개의 포인터를 사용하여 목표값을 구한다.완전 탐색 O(
: 주어진 배열에서 고정 크기의 윈도우(창문)를 이동하면서, 윈도우 내의 정보를 처리하는 알고리즘 기법배열이나 리스트와 같이 순차적인 자료구조에서 연속적인 구간을 처리해야할 때 유용하다.구간의 합, 최댓값 또는 최솟값, 유사도를 구하는 데 활용될 수 있다.주어진 배열의
지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데이터베이스에서 읽어 보여주는 서비스를 개발하고 있다.이 프로그램의 테스팅 업무를 담당하고 있는 어피치는 서비스를 오픈하기 전 각 로직에 대한 성능 측정을 수행하였는데,
문제 Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order. 모두 다른 정수로 이루어진 배열이 주어졌을 때,
플로이드 와샬 알고리즘 (Floyd Warshall) : 그래프에서 모든 정점 간의 최단 경로를 찾는 데 사용하는 알고리즘 2차원 배열을 사용해 모든 정점 쌍 간의 최단 경로를 계산한다. 초기화 : 모든 정점 간의 거리를 Infinity로 초기화하고, 직접 연결된
자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)한 줄에 하나씩 문제의 조건을 만족하는