전체 글 140

[프로그래머스] 징검다리 건너기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요카카오 초등학교의 "니니즈 친구들"이 징검다리를 건너려고 합니다. 징검다리는 숫자가 적힌 디딤돌들로 이루어져 있고, 디딤돌은 밟을 때마다 숫자가 1씩 줄어듭니다. 숫자가 0이 되면 해당 디딤돌은 더 이상 밟을 수 없으며, 친구들은 건너뛸 수 있지만 최대 k칸까지만 건너뛸 수 있습니다. 이때, 최대 몇 명의 친구들이 징검다리를 건널 수 있는지 구하는 문제입니다.접근 방법이진 탐색을 사용하여..

Binary Search (이진탐색)

이진탐색(Binary Search)은 정렬된 배열에서 특정 값을 찾기 위해 사용하는 효율적인 알고리즘입니다. 시간 복잡도가 O(logn)이기 때문에 데이터가 많아질수록 유리합니다. 이진탐색은 배열의 중간 요소와 목표 값을 비교하고, 범위를 절반씩 줄여가며 검색을 반복합니다.이진탐색 동작 과정중간값 선택: 배열의 중간에 위치한 값을 선택합니다.비교: 선택된 중간값과 찾고자 하는 값을 비교합니다.만약 값이 같으면 찾기 성공.값이 작으면 중간값 기준 왼쪽 절반만 확인.값이 크면 중간값 기준 오른쪽 절반만 확인.반복: 범위를 좁혀가며 중간값을 반복적으로 선택하고 비교합니다. public class BinarySearchExample { public static void main(String[] args) ..

cs/알고리즘 2024.10.13

[프로그래머스] 스티커 모으기(2) - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문제 개요주어진 스티커 배열에서 서로 인접한 스티커를 선택하지 않으면서 스티커에 적힌 숫자의 합을 최대화하는 문제입니다. 스티커가 원형으로 연결되어 있다는 점에서 첫 번째 스티커를 선택하면 마지막 스티커는 사용할 수 없다는 제약이 있습니다.접근 방법원형 배열 처리: 스티커가 원형으로 연결되어 있기 때문에 첫 번째 스티커와 마지막 스티커를 동시에 선택할 수 없습니다. 이를 해결하기 위해 두 가지 ..

[프로그래머스] 최고의 집합 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요주어진 자연수의 개수 n과 합 s에 대해, 각 원소의 합이 s가 되면서 각 원소의 곱이 최대가 되는 집합을 구하는 문제입니다. 만약, 그러한 집합을 만들 수 없다면 -1이 들어있는 배열을 반환해야 합니다. 접근 방법자연수 분배: s를 n개의 자연수로 최대한 균등하게 나누는 것이 각 원소의 곱을 최대화하는 방법입니다. 즉, 가능한 한 원소들의 값이 비슷해야 곱이 최대가 됩니다.s를 n으로 ..

[프로그래머스] 등굣길 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 개요계속되는 폭우로 인해 일부 지역이 물에 잠겼습니다. 우리는 물에 잠기지 않은 지역을 통해 집에서 학교까지 가는 최단 경로의 개수를 구하려고 합니다. 집은 격자의 왼쪽 위에 있고, 학교는 오른쪽 아래에 위치합니다. 경로는 오른쪽과 아래쪽으로만 이동할 수 있으며, 물에 잠긴 지역을 피해야 합니다. 이 문제는 주어진 격자의 크기와 물에 잠긴 지역을 고려하여 최단 경로의 개수를 계산하는 문제입니..

[프로그래머스] [PCCP 기출문제] 3번 / 충돌위험 찾기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/340211 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  문제 개요각 로봇은 정해진 경로에 따라 여러 포인트를 순서대로 방문하며, 로봇이 이동하는 과정에서 특정 좌표에서 충돌할 위험이 있을 수 있다. 이 문제의 목표는 모든 로봇이 운송을 마칠 때까지 발생하는 충돌 위험 상황의 횟수를 계산하는 것접근 방법경로 관리 및 충돌 체크: 로봇들이 이동하는 동안 좌표에서 충돌이 발생하는지 확인해야 한다. 이를 위해 각 시간대에 로봇들이 어떤 좌표에 있는지 추적..

[백준] 12919 A와 B 2 - Java

문제https://www.acmicpc.net/problem/12919 문제 개요주어진 문자열 S와 T가 있을 때, 주어진 조건을 바탕으로 S를 T로 변환할 수 있는지 알아내는 것이 목표문자열의 뒤에 A를 추가문자열의 뒤에 B를 추가하고 문자열을 뒤집는 것이다.접근 방법백트래킹을 이용해서 옳바른지 아닌지를 판단s -> t 순서로 백트래킹을 진행할 경우 시간초과 발생 역방향 진행시 장점효율성: 역으로 진행하면 목표 문자열 T에서 불가능한 경우를 더 빨리 걸러낼 수 있다.단순화: 문자열을 줄이는 과정이기 때문에 조건을 간단하게 확인할 수 있다.import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;imp..

문제/백준 2024.09.22

[프로그래머스] [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에 대해 ..