입출력 예시가 아래와 같은 함수 test4가 있다.사원들의 정보를 배열로 입력받아 HTML 엘리먼트의 형태로 변형해서 ul<a> 요소로 만들어진 사원의 이름을 클릭할 경우, 제공되는 printRole 함수가 실행되어 해당 사원의 role이 콘솔에 출력되어야 한다.
n번째 수는 n-1번째와 n-2번째 수를 합하여 나타내는 피보나치 수열(0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...)을 구하는 함수를 구해보았다. 위와같이 재귀형태로 두 번 함수를 호출하는 형식이다. 이렇게 불필요한 중복호출이 많을 경
어떠한 배열 두 개(books, speeds)가 있다.인자 1:booksNumber 타입을 요소로 갖는 '퍼센트' 단위의 동화책 출간의 현재 진도가 나열된 배열인자 2: speedsNumber 타입을 요소로 갖는 '퍼센트' 단위의 동화책 출간 담당자의 '하루'에 작업할
ㅠㅠ처음으로 제 시간 이내에 풀어서 냈다...!이번주 화요일~금요일 동안 매일 아침 한 문제씩 풀면서 내내 성취감을 느낄 수 없어서 참 우울했는데, 어쩌다 쉬운문제 걸린거였어도 이렇게 뿌듯할 줄이야 ㅠㅠ!오늘 문제는 버블정렬에 관한 알고리즘 문제다.버블정렬 알고리즘이란
프린터의 인쇄 작업 목록의 크기와 최대 용량을 가정하고 각기 다른 용량의 문서를 차례대로 인쇄하여 모든 문서가 인쇄되는데 최소 몇 초가 걸리는지 테스트하는 문제이다.first in first out 로직이므로 Queue 개념이 적용된 문제이다. 아래와 같이 그림을 그려
1. 조합 서로 다른 n개의 물건에서 순서를 생각하지 않고 r개를 택할 때, 이것은 n개에서 r개를 택하는 조합이라 하고, 이 조합의 수를 기호로 nCr와 같이 나타낸다. 바로 예를 살펴보도록 하자. 4Combination3 = 4C3을 코드로 구현한다면 다음과 같은
분할정복을 이용한 거듭제곱(a^n 계산을 O(log n)으로)
https://cjh5414.github.io/binary-search/
어떤 정렬된 array가 주어졌을 때, array는 오른쪽 혹은 왼쪽으로 rotate 될 수 있다.ex) sorted array 0, 1, 2, 3, 4, 5, 6, 7 => rotated array 4, 5, 6, 7, 0, 1, 2, 3rotated array 내에
부분집합이란? 수도코드 각 집합 내 '요소의 개수'를 기준으로 뽑는 게 통상 우리가 부분집합을 만들 때 겪는 과정이다. 점점 0층(공집합)부터 3층(배열의 요소가 3개인 것)까지 층을 늘려나가면서 부분집합을 구하는 것을 볼 수 있다. 즉, 층에 따라서 어떤 숫자를
재귀 함수를 이용하여 배열의 요소를 검색하면서 조건과 일치하는 값이 있는지 없는지 판단하기
Tree 구현을 위한 기본적인 코드를 작성해보고, Tree 자료구조의 특성을 이해해보았다. Tree 구현을 위한 기본적인 코드 사용 예시를 보면,,, 오늘 토이문제에서는
병합 정렬은 표준 라이브러리에서 정렬을 구현할 때 퀵 정렬이나 힙 정렬의 대안으로 사용하는 최적화된 정렬 알고리즘이다. 하나의 리스트를 두 개의 균등한 크기로 분할하고 분할된 부분 리스트를 정렬한 다음, 두 개의 정렬된 부분 리스트를 합하여 전체 정렬을 하는 방법이다.
문자열을 입력받아 문자열 내의 모든 괄호의 짝이 맞는지 여부를 리턴해야 합니다. 다음 단계에 맞춰 함수를 작성해 보세요 - 괄호의 종류를 단 한가지로 한정합니다. - 괄호의 종류를 늘려 모든 종류의 괄호에도 작동하도록 합니다. - 괄호를 제외한 문자열이 포함된 경우에
2차원 N x N 배열을 시계 방향으로 90도 회전시킨 배열을 리턴해야 합니다.세로와 가로의 길이가 각각 M, N인 2차원 M X N 배열을 시계방향으로 90도씩 K번 회전시킨 배열을 리턴해 보세요. 회전수가 두 번째 입력으로 주어집니다.회전수에 대한 규칙은 아래와 같
두 개의 배열(base, sample)을 입력받아 sample이 base의 부분집합인지 여부를 리턴해야 합니다.<주의사항>시간 복잡도를 개선하여, Advanced 테스트 케이스(base, sample의 길이가 70,000 이상)를 통과해 보세요.sample배열의
퀵정렬 pivot(중심축) 을 정하고, 중심축 보다 작은 값들은 왼쪽으로 큰 값들은 오른쪽으로 보내는 것이다. 이렇게 pivot을 정해서 왼쪽 오른쪽으로 나누고 다시금 왼쪽 오른쪽에 대해 재귀적으로 pivot을 정해서 왼쪽 오른쪽을 나누고,, 이 과정을 반복하면 결국
2차원 M x N 배열을 나선형(spiral)으로 순회해야 합니다.아래와 같이 layer 개념으로 풀 수 있겠다고 생각했고, 그럴려면 재귀함수로 문제를 접근해야하지 않을까 생각했다.하나의 레이어는 아래와 같은 규칙으로 문자열을 누적하였다. 총 for문을 네 번 작성하였
최대공약수는 두 수 A와 B의 공통된 약수 중에 가장 큰 정수이다.최대공약수를 구하는 가장 쉬운 방법은 2부터 min(A, B)까지 모든 정수로 나누어보는 방법이다.두 수, 혹은 그 이상의 여러 수의 공통인 배수 중 가장 작은 수이다.lcm을 1부터 시작하여 점차 lc
지난 포스팅에서 순열과 조합 알고리즘을 이미 구현한 바 있다.(링크)오늘 코플릿 시간에 중복순열에 관련된 문제까지 풀게 되어 이 내용까지 합하여 다시 포스팅하고자 한다. 왜냐면 세 알고리즘에서 규칙을 찾았기 때문(rest 배열)!!!순열, 조합, 중복순열 모두 같은 로
Greedy Algorithm(탐욕 알고리즘)은 말 그대로 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법이다. 탐욕 알고리즘으로 문제를 해결하는 방법은 다음과 같이 단계적으로 구분할 수 있다.선택 절차(Selection Proc