Ⅰ. 문제문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.제한 조건strings는 길이 1 이상, 50이하인 배열입니다.strings의 원소는 소문자 알파벳으로 이루어져 있습니다.strings의 원소는 길이 1 이상, 100이하인 문자열입니다.모든 strings의 원소의 길이는 n보다 큽니다.인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예stringsnreturn["sun", "bed", "car"]..
Algorithm
Ⅰ. 문제배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.2에서 나온 배열의 3번째 숫자는 5입니다.배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항array의 길이는 1 이상 100 이하입니다.array의 각 ..
Ⅰ. 정렬 (Sort)1. K번째 수 (42748, Lv1)i ~ j 구간 잘라서 정렬 후 k번째 수를 고르는 기본적인 정렬 연습용 문제부분 배열 자르기 + Arrays.sort() 패턴 연습용으로 좋음https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 2. 문자열 내 마음대로 정렬하기 (12915, Lv1)문자열 배열을 n번째 문자 기준으로 정렬하는 문제Comparator / 람다로 정렬 기준 (custom key) 주는 연습에 좋음https://school.programmers.co.kr/learn..
이번 글의 키워드는 세 가지입니다.정렬 (Sorting)이진 탐색 (Binary Search)누적합 (Prefix Sum)이전 글들에서 구현, 완전 탐색, 자료구조를 익혔다면,이제는 시간복잡도를 줄이는 대표 패턴을 익힐 차례입니다.이 글에서는 자바를 기준으로 정렬, 이진 탐색, 누적합의 개념과 코드 패턴을 정리합니다. Ⅰ. 목표정렬, 이진 탐색, 누적합을 이용해 단순 완전 탐색보다 효율적인 풀이를 설계할 수 있는 상태 만들기구체적으로는 아래 네 가지를 목표로 합니다.Arrays.sort, Collections.sort와 Comparator 사용법 익히기정렬 후 처리 패턴(그리디와 함께 자주 등장)을 이해하기이진 탐색 템플릿을 외워서 바로 코딩할 수 있게 만들기누적합을 사용해 구간 합을 O(1)에 계산하..
오늘의 핵심 주제는 네 가지 자료구조입니다.스택 (Stack)큐 (Queue)덱 (Deque)우선순위 큐(Priority Queue, 힙 구조)저번 글까지는 배열, 문자열, 완전 탐색 위주로 직접 하나하나 돌려보는 연습을 했다면,이번 글부터는 자바 자료구조를 이용해서 문제를 더 깔끔하게 푸는 패턴을 익혀보려고 합니다.각 자료구조의 개념과 자바 코드 사용법, 코딩테스트에서 자주 나오는 활용 패턴까지 정리해보겠습니다. Ⅰ. 목표자바의 스텍, 큐, 덱, 우선순위 큐를 자유롭게 사용할 수 있고,어떤 문제에 어떤 자료구조를 써야 할지 감이 오는 상태 만들기 구체적인 목표는 다음과 같습니다.스택으로 괄호 검사, 되돌리기(Undo) 등 LIFO 패턴 구현큐로 순서대로 처리하는 FIFO 문제 구현덱으로 양쪽에서 넣고..
이번 글의 핵심 주제는 세 가지입니다.첫째, 배열둘째, 문자열셋째, 완전 탐색저번 글에서 입출력과 기본 구현 패턴을 익혔다면,이번 글에서는 데이터를 담고 꺼내고 돌려보는 연습을 해보겠습니다. Ⅰ. 목표배열과 문자열을 자유롭게 다루면서가능한 모든 경우를 직접 탐색하는 완전 탐색 패턴에 익숙해진다. 구체적으로는 다음 네 가지를 목표로 합니다.1차원 / 2차원 배열 선언, 초기화, 순회 패턴 익히기문자열에서 문자를 꺼내고, 부분 문자열을 다루는 패턴 연습이중, 삼중 반복문을 사용한 완전 탐색 감각 익히기완전 탐색의 시간 복잡도에 대한 감을 잡기 Ⅱ. 배열 기본 패턴 정리- 1차원 배열 선언과 초기화코딩테스트에서 가장 기본이 되는 자료구조가 1차원 배열입니다.int n = Integer.parseInt(br..
코딩테스트를 준비할 때 가장 먼저 잡아야 할 것은 두 가지입니다. 첫째, 코테용 빠른 입출력 세팅둘째, 구현과 시뮬레이션 문제를 푸는 기본 사고 방식 이번 글에서는 1주차 목표와 함께 Java 언어를 이용한 구현 접근 패턴을 정리합니다. Ⅰ. 목표Java 코딩테스트에서 기본이 되는 입출력 패턴과 구현·시뮬레이션 문제 흐름을 몸에 익힌다. 구체적으로는 다음 네 가지에 집중해보겠습니다.Scanner 대신 BufferedReader / BufferedWriter 사용에 익숙해지기공백으로 구분된 입력 파싱: StringTokenizer / split 패턴 익히기StringBuilder를 이용한 출력 최적화구현/시뮬레이션 문제를 단계적으로 쪼개서 코드로 옮기는 연습 Ⅱ. 빠른 입출력 세팅- 왜 Scanner ..