b.2473 세용액
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/2473   이 문제는 주어진 농도들 속에서 합이 가장 0에 가까운 3가지 용액조합을오름차순으로 출력하는 문제이다. 용액의 가짓수가 최대 5000에 달하고농도의 범위가 최대 10억에 해당되어 끝 범위를 잘 체크하여 검사해야한다.투 포인터를 활용하여 효율적으로 세 수를 탐색하며,정렬과 반복문을 통해 각 경우를 계산했다.먼저 입력받은 배열 arr을 정렬하여 오름차순으로 정렬 후투 포인터 접근법을 사용하여각 숫자를 고정점(t)으로 선택하고,나머지 두 숫자는 투 포인터로 탐색한다.투 포인터는 고정점을 제외한 배열의 양 끝에서 시작하며, 현재 선택된 세 숫자의 합을 계산해 절대값 기준으로 0에 가장 가까운 값을 갱신한다.twoPointer 메서드는 고정점 ..
b1806. 부분합
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1806   이번 문제는 배열에서 연속 부분합이 SSS 이상이 되는 최소 길이를 구하는 문제다.먼저 배열의 크기 NNN과 목표 합 SSS를 입력받고 배열 arr를 생성한다.이후 배열의 최댓값을 maximum에 저장하고,누적 합을 계산할 배열 dp를 초기화한다. 누적 합 배열은 0부터 iii까지의 합을 저장하며, 이를 이용해 특정 구간의 합을 빠르게 계산할 수 있다고 생각했다.find 메서드는 연속 부분합의 길이를 1부터 NNN까지 늘려가며 모든 구간을 탐색한다. 탐색 중 누적 합이 SSS 이상이 되는 구간이 발견되면 해당 길이를 반환하고 종료한다.만약 모든 구간을 탐색해도 조건을 만족하는 구간이 없다면 0을 반환한다.마지막으로 계산된 최소 길이를 ..
b1644 소수의 연속합
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1644   주어진 자연수 N을 소수의 연속된 합으로 나타내는 경우의 수를 구하는 문제다. 먼저, getArr 메서드를 통해 2부터 N까지의 소수들을 구한다.이 과정에서 에라토스테네스의 체를 사용하여 소수를 빠르게 판별한다. isPrime 배열을 초기화하고, 2부터 시작해 소수의 배수를 모두 제거해가며소수 여부를 판별하여, primes 리스트에 소수들만 저장한다.이후 리스트를 배열로 변환해 반환하여 효율적으로 소수 리스트를 사용할 수 있게 한다.main 메서드에서는 먼저 N의 값을 입력받고,getArr를 통해 구한 소수 배열 arr을 활용해 문제를 풀어간다. start와 end 포인터를 통해 배열 내 소수의 연속합을 확인하며,합이 N과 같을 경우 ..
b28702, b30804
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/28702https://www.acmicpc.net/problem/30804   28702 : FizzBuzzFizzBuzz 문제는 Fizz와 Buzz에 공통적으로 들어가는 z가 입력받은 문자열에 있는지 확인하고아니라면 숫자로 변환하여숫자의 현위치와 답의 위치를 고려하여 숫자를 계산해낸다.그다음 Fizz Buzz를 판별하는 method isFizzBuzz를 통해반환된 문자열을 출력하였다. 30804 : 과일탕후루 투포인터를 활용한 슬라이딩 윈도우 기법으로 풀었다.시작과 끝점을 계산하기보다 시작점과 끝점을 시작점부터유기적으로 이동시키면서 최대 연속된 구간을 answer에 저장하고만약 꽃힌 과일의 갯수가 2개 이상이라면 while 문을 통해과일을 제거..
Lv 3. 보석 쇼핑
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/67258?language=java 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   투포인터와 슬라이딩 윈도우 알고리즘을 활용하여풀이하였다.맨처음 생각한 것은 시작과 끝 두개의 지점을 정하고끝지점에서 하나씩 줄여나가고 보석의 갯수가 떨어지면 시작점을 늘리는 방식으로고민하였으나 그 마저도 예외가 존재할 수 있어 시작과 끝점을 1부터시작해 끝점이 올라가다가 보석 갯수가 보석종류와 일치할때시작점을 올려보면서 보석종류와 보석갯수가 달라질때를 찾고 최저점 갱신을 ..