CS & Algorithm(24)
-
[프로그래머스] 68644. 두 개 뽑아서 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/68644 접근 방식서로 다른 조합을 만들기 위해 numbers[i], numbers[j] 이중 for문 사용j를 항상 i + 1에서 시작하도록 설정하여 같은 인덱스를 두 번 선택하는 경우(i == j)를 막고(a, b)와 (b, a)처럼 순서만 다른 중복 조합이 생성되지 않도록 처리 생성된 합은 Set에 넣어 중복 제거 Set에 모인 값들을 꺼내 오름차순 정렬된 int 배열로 변환하여 반환나의 풀이 코드import java.util.*;class Solution { public int[] solution(int[] numbers) { int numberCount = numbers.l..
2025.11.20 -
[프로그래머스] 42748. K번째수
https://school.programmers.co.kr/learn/courses/30/lessons/42748?language=java 문제 설명주어진 배열 array와, 각 [i, j, k]로 이루어진 commands 배열이 있을 때array의 i번째부터 j번째까지 자르고, 정렬한 뒤, k번째 숫자를 선택하여 결과 배열로 반환 접근 방식commands 배열을 하나씩 순회한다array에서 i번째 ~ j번째까지 잘라 새로운 배열 생성int start = commands[i][0] - 1; // 0-based 변환int end = commands[i][1]; // end는 포함되지 않음int[] sliced = Arrays.copyOfRange(array, start, end); 3. 잘라낸..
2025.11.20 -
[Codility] 1. BinaryGap
https://app.codility.com/programmers/lessons/1-iterations/binary_gap/ 문제 설명Binary gap은 어떤 양의 정수 N을 2진수로 표현했을 때, 양쪽이 1로 둘러싸인 연속된 0들의 구간 중 “최대 길이”를 의미한다. 예시 N = 92진수: 10011001 → 길이 2인 binary gap 하나N = 5292진수: 10000100011000010001 → 길이 4, 길이 3인 gap 두 개 → 최대값 4N = 202진수: 10100 10100 → 가운데 0은 길이 1짜리 gap, 마지막 00은 오른쪽에 1이 없어서 gap 아님N = 152진수: 11110이 없으므로 gap 없음 (0)N = 322진수: 100000100000 → 1로 닫히지 않은 0..
2025.11.20 -
[코테 개념 정리] Sorting Algorithm : 정렬 알고리즘
이번 게시글에서는 코딩 테스트에서 아주 빈번하게 등장하는 정렬 알고리즘(Sorting Algorithm)에 대해 정리해보려고 합니다. 정렬 알고리즘은 단순히 숫자나 문자열을 오름차순/내림차순으로 정리하는 기능을 넘어서,데이터 전처리, 탐색 속도 향상, 우선순위 처리, 중복 제거, 패턴 분석 등 거의 모든 알고리즘 문제의 기반이 되는 핵심 개념입니다. 특히 코딩 테스트에서는 문제 의도와 상관없이일단 데이터를 정렬한 뒤에 시작하는 문제가 굉장히 많기 때문에 정렬 알고리즘을 이해해두면 문제 접근 속도 자체가 달라집니다. 정렬 알고리즘이란? 정렬 알고리즘은 데이터를 특정 기준(예: 오름차순, 내림차순, 문자열 길이, 특정 key 값 등)에 따라 재배치하는 알고리즘정렬은 데이터 구조나 알고리즘이 본격적으로 시작되..
2025.11.20 -
[Leet Code] 20. Valid Parentheses
https://leetcode.com/problems/valid-parentheses/description/ 문제 설명주어진 문자열 s는 '(', ')', '{', '}', '[', ']' 문자만으로 구성되어 있습니다.이때, 문자열이 **올바른 괄호 문자열(valid parentheses)**인지 판별하세요. 문자열이 올바르다고 판단되는 조건은 다음과 같습니다:열린 괄호는 반드시 동일한 종류의 닫힌 괄호로 닫혀야 한다.예: (는 )로, [는 ]로, {는 }로만 닫을 수 있습니다.괄호는 올바른 순서대로 닫혀야 한다.중첩된 괄호는 구조적으로 올바른 순서를 유지해야 합니다.닫힌 괄호가 등장할 때, 반드시 해당하는 열린 괄호가 이전에 존재해야 한다.즉, 닫힌 괄호가 먼저 등장하면 올바르지 않은 문자열입니다. 접..
2025.11.20 -
[백준] 10870. 피보나치수 5
https://www.acmicpc.net/problem/10870 풀이1구조가 단순하지만 이미 계산한 fib(n-1)과 fib(n-2)를 다시 계산을 하여 중복 호출이 발생시간 복잡도 : O(2ⁿ) (지수적 증가 → 비효율적)import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.IOException;public class Main { static int fib(int n) { if (n == 0) return 0; if (n == 1) return 1; return fib(n - 1) + fib(n - 2); } public static void main(Stri..
2025.10.10