분류 전체보기 133

[프로그래머스] [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/340212 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문제 개요각 퍼즐은 난이도와 소요 시간이 주어지며, 퍼즐을 푸는 데 걸리는 시간은 숙련도에 따라 달라진다. 이 문제의 목표는 주어진 제한 시간 내에 모든 퍼즐을 해결하기 위한 최소 숙련도를 찾는 것 접근 방법이진 탐색을 활용하여 숙련도의 최솟값을 찾기 이진 탐색 초기화: 숙련도의 범위를 1부터 100,000까지 설정시간 계산 로직 구현: 각 숙련도에 대해 주어진 퍼즐을 해결하는 데 걸리는 총 ..

Kadane’s Algorithm (카데인 알고리즘)

Kadane 알고리즘은 주어진 배열에서 연속된 부분 배열의 합이 가장 큰 값을 효율적으로 찾는 알고리즘. 이 알고리즘은 동적 프로그래밍(Dynamic Programming)의 일종으로, 선형 시간 복잡도 O(n)을 가지기 때문에 큰 배열에서도 빠르게 최대 합을 구할 수 있다.배열의 두 번째 요소부터 마지막 요소까지 반복하면서, 각 요소에서 maxCurrent를 현재 요소와 maxCurrent + 현재 요소 중 더 큰 값으로 갱신maxGlobal을 maxCurrent와 비교하여 더 큰 값으로 업데이트예시public class KadaneAlgorithm { public static int main(String[] args) { int[] example = {-2, 1, -3, 4, -1,..

cs/알고리즘 2024.09.11

[프로그래머스] 두 원 사이의 정수 쌍 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/181187 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요중심이 원점인 두 개의 원이 주어진다. 두 원은 서로 다른 크기의 반지름 r1과 r2를 가지고 있다. 이때, 두 원 사이에 있는 공간(즉, 작은 원과 큰 원 사이의 영역)에 x좌표와 y좌표가 모두 정수인 점의 개수를 구하는 문제아이디어원의 방정식: 중심이 (0, 0)이고 반지름이 r인 원의 방정식(x2+y2=r2x^2 + y^2 = r^2x2+y2=r2)을 기반으로, 주어진 x에 대해 ..

[프로그래머스] 가장 긴 팰린드롬 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/12904?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요주어진 문자열 s에서 부분 문자열 중 가장 긴 팰린드롬(앞뒤가 똑같은 문자열)의 길이를 찾아 반환하는 문제팰린드롬이란?팰린드롬(Palindrome)은 앞뒤를 뒤집어도 동일한 문자열을 의미한다. 예를 들어, "abcdcba"와 같은 문자열은 팰린드롬이며, "abcba", "aa", "a"도 팰린드롬에 해당 풀이문자열의 각 위치를 중심으로, 양쪽으로 확장하면서 팰린드..

[프로그래머스] 연속 펄스 부분 수열의 합 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/161988 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr sequence 배열에 -1, 1, -1 · · · 순서로 곱한 배한 배열, 1, -1, 1 · · · 순서로 곱한 배열 각각의 배열에서 연속된 부분 배열의 합이 가장 큰 값을 찾아 return 해주면 된다.연속된 부분 배열의 합이 가장 큰 값을 찾는 알고리즘으로 kadane 알고리즘을 활용하면 된다 https://icodesiuuuu.tistory.com/12 Kadane’s Algorithm..

[프로그래머스] 호텔 방 배정 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/64063 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   import java.util.*;class Solution { static Map map = new HashMap(); public long[] solution(long k, long[] room_number) { long[] answer = room_number; for(int i=0; i

[프로그래머스] N으로 표현 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  N을 i번 반복하여 만든 숫자를 먼저 dp[i]에 추가합니다. 예를 들어, N = 5이고 i = 3이라면 555라는 숫자를 추가두 개의 작은 집합을 결합하여 새로운 숫자를 만들어냄. 예를 들어, dp[2]에서 55와 dp[1]에서 5를 이용해 dp[3]에서 555, 50, 275 등을 만든다  import java.util.*;class Solution { public int solutio..

[프로그래머스] 보행자 천국 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/1832 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 단순 bfs/dfs로는 시간초과가 발생하는 dp 문제오른쪽 혹은 아래로만 이동할 수 있기 때문에 dp 배열을 dp[m+1][n+1][2]로 생성dp[i][j][0]: (i, j) 위치에 도달할 수 있는 경로 중 위에서 내려온 경로의 수dp[i][j][1]: (i, j) 위치에 도달할 수 있는 경로 중 왼쪽에서 온 경로의 수cityMap이 0일 때(자동차가 자유롭게 이동할 수 있는 경우) dp[i][..

[프로그래머스] 풍선 터트리기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/68646 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  import java.util.*;class Solution { public int solution(int[] a) { int n = a.length; if (n = 0; i--) { rightMin[i] = Math.min(rightMin[i+1], a[i]); } int answer = 2; ..

[프로그래머스] 코딩 테스트 공부 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/118668 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  DP로 해결가능한 문제입출력 예#2로 예시를 들면 시작점은 0, 0 이고 최대 값은 10, 11 이기 때문에 10, 11 사이즈의 배열을 만들고 MAX_VALUE로 초기화 한다그리고 순차적 탐색을 하면서 단순히 공부만 했을 때 걸리는 시간과 문제를 풀었을 때 걸리는 시간을 비교하여 더 적은 값을 저장한다class Solution { public int solution(int alp, in..