b.1725 히스토그램
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/1725   📌 자바(Java)로 푸는 히스토그램에서 가장 큰 직사각형 문제 풀이🔎 문제 개요이 문제는 백준 "히스토그램에서 가장 큰 직사각형 (1725번)" 문제입니다.주어진 히스토그램에서 가장 큰 직사각형의 넓이를 구하는 문제입니다.💡 예제 입력72145133💡 예제 출력8위 입력에 대한 히스토그램을 그려보면 아래와 같습니다.이때, 가장 큰 직사각형의 넓이는 8입니다.🛠 알고리즘 접근 방식이 문제를 해결하기 위해 스택(Stack) 을 활용한 O(N) 최적화 방법을 사용합니다.✏️ 주요 고려 사항각 히스토그램 막대의 높이(h)를 기준으로 만들 수 있는 가장 큰 직사각형의 넓이를 계산해야 합니다.스택을 활용하여 효율적으로 넓이를 계산할 수..
b.17299 오등큰수
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/17299    📌 자바(Java)로 푸는 오등큰수 문제 풀이🔎 문제 개요주어진 수열에서 각 숫자의 등장 횟수를 고려하여 오른쪽에서 가장 가까운 "더 자주 등장한 숫자"를 찾아야 하는 문제입니다.일반적인 오큰수(NGE, Next Greater Element) 문제와 달리 "숫자의 크기"가 아닌 "등장 횟수"를 기준으로 비교한다는 점이 다릅니다.💡 예제 입력71 1 2 3 4 2 1💡 예제 출력-1 -1 1 2 2 1 -1위 예제에서 각 숫자의 등장 횟수를 보면:1 → 3번 등장2 → 2번 등장3 → 1번 등장4 → 1번 등장각 숫자에 대해 오른쪽에서 더 자주 등장한 숫자를 찾으면 위와 같은 결과가 나옵니다.🛠 알고리즘 접근 방식이 문제를 ..
b.17298 오큰수
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/17298   이 문제는 배열의 각 원소에 대해"오큰수(오른쪽에 있는 수 중 현재 수보다 큰 수 중 가장 가까운 것)"를 구하는 문제다.먼저 main 메서드에서 프로그램 실행의 흐름을 살펴보면,사용자로부터 입력값을 받아 배열에 저장한 후 logic 메서드를 호출해오큰수를 계산한 뒤 결과를 출력한다.사용자는 먼저 배열의 크기 N을 입력하고,다음 줄에 배열의 원소를 공백으로 구분하여 입력한다.이후 logic 메서드를 호출하여 오큰수를 계산한다. logic 메서드는 스택을 사용하여 효율적으로 오큰수를 구하는 핵심 부분이다.이 알고리즘은 반복문을 통해 배열을 순회하면서현재 원소와 스택에 저장된 인덱스를 비교한다. 스택에는 아직 오큰수가 결정되지 않은 인덱..
Lv 3. 표 편집
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/81303 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   이 문제는 테이블에서 행을 선택하고 이동하거나 삭제 및 복원을 처리하는 문제다.각 명령어를 수행하며 최종적으로 테이블의 상태를 반환한다.테이블 크기가 크고,명령어의 수가 많더라도 스택을 활용해 빠르게 동작하도록 설계했다.먼저 TableEditor라는 클래스를 만들어 테이블의 크기와 현재 커서 위치를 관리한다.tableSize는 현재 활성화된 테이블의 총 행 수를,cursor는 현재 커서가 위치한 행을,removed는 삭제된 행의 정보를 저장..
b6549. 히스토그램에서 가장 큰 직사각형
·
Algorithm & Data Structures/BOJ
https://www.acmicpc.net/problem/6549   히스토그램에서 가장 큰 직사각형의 넓이를 구하는 문제다. 스택을 써서 아주 풀었다.히스토그램은 막대들로 이루어진 그래프 같은 건데, 이 막대들을 조합해서 최대한 큰 직사각형을 만들고 그 넓이를 구하는 게 목표다. 먼저 입력으로 막대 개수와 각 막대의 높이를 받아오는데, 입력이 0이면 종료한다. 그렇지 않으면 각 히스토그램에 대해 최대 직사각형의 넓이를 계산한다. 계산의 핵심은 바로 getMaxRectangleArea라는 메서드다.여기서 스택을 활용해 최대넓이를 갱신한다. 스택에는 막대들의 인덱스를 저장하는데,현재 막대의 높이가 이전 막대들보다 낮아지면 스택에서 하나씩 꺼내며 직사각형의 넓이를 계산한다.꺼낸 막대의 높이를 기준으로 넓이를..
Lv 2. 과제 진행하기
·
Algorithm & Data Structures/Programers
https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   주어진 과제들의 실행 순서를 정리하는 문제다. 각 과제는 이름, 시작 시간, 실행 시간으로 구성되며,시작 시간은 "HH:mm" 형식을 분 단위로 변환하여 처리된다.입력받은 계획들을 Assignment 객체로 변환한 후,시작 시간 기준으로 오름차순 정렬한다.정렬된 과제를 순서대로 처리하면서 중단된 과제는 스택에 저장하고,조건에 따라 남은 시간을 활용해 다시 실행한다. 현재 과제의 종료 시간이 다음 과제의 시작 시간 이후라면,현재 과제는 중단..
1918. 후위 표기식 (Java)
·
Algorithm & Data Structures/BOJ
스택과 priority 함수를 통해 연산자의 우선순위를 판단하고 출력한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); String str =br.readLine(); Stack st = new Sta..