Algorithm (17) 썸네일형 리스트형 [Algorithm] Search 이번 장에서는 이분탐색과 결정알고리즘을 통해 문제를 해결해본다. 모든 코드는 깃허브 (링크)의 테스트 코드로 정리해두었다. 이분검색 임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수 중 한 개의 수인 M이 주어지면 이분검색으로 M이 정렬된 상태에서 몇 번째에 있는지 구하는 프로그램을 작성하세요. 단 중복값은 존재하지 않습니다. 입력설명 첫 줄에 한 줄에 자연수 N(3 [Algorithm] Sorting 이번 장에서는 정렬을 활용하여 문제를 해결해본다. 다룰 정렬 알고리즘은 선택정렬, 버블정렬, 삽입정렬이며 Java의 Arrays.sort()도 추가로 활용한다. 모든 코드는 깃허브 (링크)의 테스트 코드로 정리해두었다. 정렬 N개이 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요. 정렬하는 방법은 선택정렬입니다. 입력설명 첫 번째 줄에 자연수 N(1= 0; j--) { if (inputs[j] > temp) { inputs[j + 1] = inputs[j]; } else { break; } } inputs[j + 1] = temp; } return inputs; } @Test @DisplayName("정렬") public void main() { int[] inputs = {13, 5.. [Algorithm] Queue 이번 장에서는 Queue를 활용하여 문제를 해결해본다. 모든 코드는 깃허브 (링크)의 테스트 코드로 정리해두었다. 공주 구하기 정보 왕국의 이웃 나라 외동딸 공주가 숲속의 괴물에게 잡혀갔습니다. 정보 왕국에는 왕자가 N명이 있는데 서로 공주를 구하러 가겠다고 합니다. 정보왕국의 왕은 다음과 같은 방법으로 공주를 구하러 갈 왕자를 결정하기로 했습니다. 왕은 왕자들을 나이 순으로 1번부터 N번까지 차례로 번호를 매긴다. 그리고 1번 왕자부터 N 번 왕자까지 순서대로 시계 방향으로 돌아가며 동그랗게 앉게 한다. 그리고 1번 왕자부터 시 계방향으로 돌아가며 1부터 시작하여 번호를 외치게 한다. 한 왕자가 K(특정숫자)를 외치면 그 왕자는 공주를 구하러 가는데서 제외되고 원 밖으로 나오게 된다. 그리고 다음 왕자.. [Algorithm] Stack 이번 장에서는 Stack을 활용해 문제를 해결해본다. 모든 코드는 깃허브 (링크)의 테스트 코드로 정리해두었다. 올바른 괄호 괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다. (())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다. 입력설명 첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다. 출력설명 첫 번째 줄에 YES, NO를 출력한다. 입력예제 1 (()(()))(() 출력예제 1 NO public class CorrectBracket { public String solution1(String brackets) { Stack stackOfBrackets = new Stack(); for (int i = .. [Algorithm] HashMap HashMap과 TreeSet을 활용하여 문제를 해결해본다. 모든 코드는 깃허브 (링크)의 테스트 코드로 정리해두었다. 학급 회장 학급 회장을 뽑는데 후보로 기호 A, B, C, D, E 후보가 등록을 했습니다. 투표용지에는 반 학생들이 자기가 선택한 후보의 기호(알파벳)가 쓰여져 있으며 선생님은 그 기호를 발표하고 있습니다. 선생님의 발표가 끝난 후 어떤 기호의 후보가 학급 회장이 되었는지 출력하는 프로그램을 작성하세요. 반드시 한 명의 학급회장이 선출되도록 투표결과가 나왔다고 가정합니다. 입력설명 첫 줄에는 반 학생수 N(5 [Algorithm] Sliding window 시간 복잡도를 O(n^2)에서 O(n)으로 바꿀 수 있는 Sliding window 알고리즘을 활용하여 문제를 해결해본다. 모든 코드는 깃허브 (링크)의 테스트 코드로 정리해두었다. 최대 매출 현수의 아빠는 제과점을 운영합니다. 현수아빠는 현수에게 N일 동안의 매출기록을 주고 연속 된 K일 동안의 최대 매출액이 얼마인지 구하라고 했습니다. 만약 N=10이고 10일 간의 매출기록이 아래와 같습니다. 이때 K=3이면 12 15 (11 20 25) 10 20 19 13 15 연속된 3일간의 최대 매출액은 11+20+25=56만원입니다. 여러분이 현수를 도와주세요. 입력설명 첫 줄에 N(5 [Algorithm] Two Pointers 시간 복잡도를 O(n^2)에서 O(n)으로 바꿀 수 있는 Two Pointers 알고리즘을 활용하여 문제를 해결해본다. 모든 코드는 깃허브 (링크)의 테스트 코드로 정리해두었다. 두 배열 합치기 오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을 오름차순으로 합쳐 출력하는 프로그램을 작성하세요. 입력설명 첫 번째 줄에 첫 번째 배열의 크기 N(1 [Algorithm] 배열 다루기 배열을 다루는 알고리즘 문제를 해결해본다. 모든 코드는 깃허브 (링크)의 테스트 코드로 정리해두었다. 큰 수 출력하기 N(1 이전 1 2 3 다음 목록 더보기