12. [Java] 투 포인터 (2-Pointer)
CS/알고리즘2025. 3. 21. 17:4912. [Java] 투 포인터 (2-Pointer)

일반적으로 배열에서 2개의 인덱스(포인터)를 움직이면서 문제를 해결하는 방법보통 왼쪽(left), 오른쪽(right) 혹은 시작(start), 종료(end) 쌍으로 포인터를 표현한다.외워야 할 알고리즘이라기 보다는 이렇게도 문제를 풀 수 있구나 정도로 알아두면 된다.2개의 포인터를 동시에 +1씩 움직이면서 답을 구하는 알고리즘은 [슬라이딩 윈도우] 라고 부르기도 한다.  Referencehttps://www.acmicpc.net/problem/2559https://school.programmers.co.kr/learn/courses/30/lessons/42885https://school.programmers.co.kr/learn/courses/30/lessons/67258

[프로그래머스] 모의고사 - LV1
프로그래머스/완전 탐색2025. 3. 17. 22:23[프로그래머스] 모의고사 - LV1

📝 문제https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr[설명]가장 먼저 해야할 일은 수포자들의 문제를 찍는 패턴을 분석 [접근 방법]1. 수포자들의 패턴을 미리 배열에 저장. 특정 패턴이 있으면 배열에 미리 담아두자!2. 수포자들의 패턴과 답안을 비교해서 일치하는 개수릊 저장하는 배열을 선언3. 정답과 수포자들의 패턴을 비교해서 각 수포자들의 점수를 구한다. 정답 패턴의 길이가 수포자의 답안 길이보다 긴 경우, 정답 패턴의 처음 데이터와 다시 비교할 수 있도록 연산자 사용.if (answe..

[프로그래머스] 두 개 뽑아서 더하기 - LV1
프로그래머스/배열2025. 3. 17. 21:19[프로그래머스] 두 개 뽑아서 더하기 - LV1

📝 문제https://school.programmers.co.kr/learn/courses/30/lessons/68644 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr[설명]정수 배열 numbers에서 서로 다른 인덱스에 있는 2개의 수를 뽑아 더해 만들 수 있느 모든 수를 배열에 오름차순으로 담아 반환 [접근 방법]numbers의 최대 데이터 개수가 100이므로 시간 복잡도 고려하지 않아도 됨.1. 배열에서 두 수를 선택하는 모든 경우의 수 구하기2. 1에서 구한 수를 새로운 배열에 저장하고 중복값을 제거3. 배열을 오름차순으로 정렬하고 반환🔑 풀이import java.util.*;class So..

11. [Java] DP (Dynamic Programming : 동적 계획법)
CS/알고리즘2025. 2. 25. 21:0211. [Java] DP (Dynamic Programming : 동적 계획법)

DP (Dynamic Programming : 동적 계획법)N-a번째 답(값)을 이용하여 N번째 답을 구하는 알고리즘Memoization 한 번 구한 값을 배열 등에 저장(메모)해두고, 다음에 같은 값이 필요하면 메모해 둔 값을 사용하는 것으로 시간적 효율성을 증가시킨다.일반적으로 N번째 답(값)을 구하기 위해 기존에 구해둔 N-a번째 답(값)을 사용하므로, 초기값은 직접 구해서 세팅하는 경우가 많다.주로 For문과 DP값을 저장하는 배열로 구현하며 재귀함수로 구현하기도 한다.📌 DP 접근 방법N-1번째 혹은 N-2번째 답(값)을 이용하여 N번째 답(값)을 구할 수 있을까 고민해본다.경우의 수 구하는 문제가 DP문제인 경우가 상당히 많다.일종의 점화식을 이용해서, 초기값 1번째 혹은 2번째 값까지는 직..

image