전체 글 140

[백준] 10799 쇠막대기 - Java

문제https://www.acmicpc.net/problem/10799  문제 개요여러 개의 쇠막대기를 위에서 아래로 레이저로 절단하는 문제입니다. 레이저와 쇠막대기는 괄호 표현으로 주어지며, 레이저는 인접한 ‘( )’로 나타납니다. 각 쇠막대기는 ‘(’로 시작하여 ‘)’로 끝나고, 레이저가 쇠막대기를 절단하면서 조각의 총 개수를 계산하는 것이 목표입니다. 접근 방법스택을 이용한 괄호 쌍 확인: 쇠막대기의 끝과 레이저를 구분하기 위해 스택 자료구조를 사용합니다.레이저와 막대기 구분:‘(’는 막대기 시작을 나타내므로 스택에 푸시합니다.‘)’를 만났을 때, 이전 문자가 ‘(’라면 레이저입니다. 레이저는 현재 스택의 크기만큼 막대기를 절단하므로, 스택에 남은 막대기의 수만큼 조각 수를 더합니다.만약 이전 문자..

문제/백준 2024.10.31

[백준] 4920 테트리스 게임 - Java

문제https://www.acmicpc.net/problem/4920  문제 설명이 문제는 테트리스 블록 중 하나를 N x N 크기의 표에 놓아 블록 아래에 있는 숫자의 합이 최대가 되도록 배치할 때, 그 최대 합을 구하는 문제입니다. 주어지는 블록은 총 5종류이고, 90도씩 회전할 수 있어 각기 다른 형태를 갖습니다.문제 풀이이 문제에서는 다음과 같은 과정을 통해 최댓값을 찾습니다:블록의 모든 가능한 형태 정의블록을 회전시키면 최대 4가지 형태가 생깁니다. 모든 회전 형태를 미리 정의해두고 사용합니다.모든 위치에 블록을 놓아본 후 합 계산각 위치에 대해 모든 블록의 형태를 적용해보고, 표 안에 들어가는 경우에만 블록이 차지하는 네 개의 위치 값을 더하여 합을 계산합니다.최댓값 갱신계산한 합이 이전 최댓..

문제/백준 2024.10.30

[프로그래머스] 입국심사 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요이 문제는 여러 심사대를 통해 주어진 사람 수 n명을 가능한 한 최소 시간에 모두 심사하는 방법을 찾는 문제입니다. 각 심사대의 심사 시간은 다르며, 모든 사람이 심사를 완료하는데 걸리는 시간의 최솟값을 구해야 합니다.문제 접근 방식입국 심사 문제는 이분 탐색을 활용해 최적의 답을 찾아낼 수 있습니다. 이 문제를 해결하기 위해 전체 시간을 이분 탐색으로 줄여가며 필요한 최소 시간을 찾아낼 수 있습니다.문제 풀이이분 탐색 설정:가능..

[프로그래머스] 여행경로 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요이 문제는 주어진 항공권을 모두 사용해 여행 경로를 찾는 문제입니다. 여행은 항상 "ICN" 공항에서 출발하며, 항공권을 사용해 여러 공항을 방문하는 단 하나의 경로를 찾아야 합니다. 여행 경로를 찾는 것을 목표로 하며, 알파벳 순서에 따라 경로를 정렬하는 정렬 문제이기도 합니다.문제 분석항공권 사용 조건: 모든 항공권을 반드시 사용해야 합니다.중복 경로: 여러 경로가 가능한 경우 알파벳 순서가 우선인 경로를 반환해야 합니다.탐색..

[프로그래머스] 단어 변환 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 개요두 개의 단어 begin, target과 단어 집합 words가 주어집니다. 단어 변환 규칙은 다음과 같습니다.한 번에 하나의 알파벳만 바꿀 수 있습니다.변환 과정에서의 단어는 words에 포함되어야 합니다.목표는 begin을 시작으로 target으로 변환하는 최소 변환 단계를 찾는 것입니다. 변환할 수 없는 경우 0을 반환합니다.문제 분석단어 하나씩 알파벳 하나만 바꿔 target에 도달해야 합니다.각 단어가 words에 포함된 ..

[프로그래머스] 소수 찾기 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요숫자가 적힌 종이 조각이 흩어져 있습니다. 이 조각들을 붙여서 소수를 만들 수 있는 숫자 조합이 몇 개인지 알아내는 문제입니다. 주어진 문자열 numbers로 만들 수 있는 모든 조합을 생성하여, 그 중 소수인 숫자를 찾아 개수를 반환하는 프로그램을 작성합니다.문제 접근 방법모든 조합 생성: 주어진 문자열에서 한 자리 수부터 numbers.length 자리 수까지 가능한 모든 조합을 생성합니다.중복 제거: HashSet을 사용해 ..

[프로그래머스] 이중우선순위큐 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/42628# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요이중 우선순위 큐는 일반적인 우선순위 큐의 기능을 확장하여 최댓값과 최솟값을 동시에 관리할 수 있는 자료구조입니다. 이 문제에서 주어진 연산에는 다음과 같은 기능이 있습니다.I 숫자: 숫자를 큐에 삽입합니다.D 1: 큐에서 최댓값을 삭제합니다.D -1: 큐에서 최솟값을 삭제합니다.이 연산을 처리한 후 큐가 비어 있으면 [0, 0], 비어 있지 않으면 [최댓값, 최솟값]을 반환해야 합니다.해결 방법우선순위 큐 활용자바의 Prior..

[프로그래머스] 다리를 지나는 트럭 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요트럭들이 순서대로 일차선 다리를 건너려 합니다. 다리는 최대 bridge_length대의 트럭을 동시에 수용할 수 있으며, 총 무게 weight만큼의 하중을 견딜 수 있습니다. 모든 트럭이 대기열 순서대로 다리를 건널 때 필요한 최소 시간을 구하는 문제입니다. 문제 풀이 개요각 트럭이 다리를 건너는 상황을 시뮬레이션하여 풀이합니다. 다리를 건너는 트럭들을 큐에 저장하며 트럭이 다리를 통과할 때마다 시간을 증가시키고, 새로운 트럭이..

[프로그래머스] 의상 - Java

문제https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  문제 개요코니는 다양한 옷 조합을 좋아합니다. 여러 종류의 옷을 가지고 있는 코니는 매일 다른 조합으로 옷을 입고 싶어 합니다. 각 옷은 특정 종류에 해당하며, 같은 종류의 옷은 한 번에 하나씩만 입을 수 있습니다. 최소 하나의 옷을 입어야 하며, 주어진 옷들로 서로 다른 조합의 수를 구하는 문제입니다. 접근 방법옷의 조합을 구하기 위해서는 각 종류별로 옷의 개수를 확인하고, 각 옷을 입거나 입지 않는 경우를 계산합니다. 조합의 경우 수는..

[백준] 1654 랜선 자르기 - Java

문제https://www.acmicpc.net/problem/1654  문제 개요오영식은 K개의 서로 다른 길이의 랜선을 가지고 있으며, 이를 잘라 N개의 동일한 길이의 랜선으로 만들어야 합니다. 랜선을 자를 때는 남은 조각을 사용할 수 없고, 자르는 길이는 항상 정수 단위로 진행됩니다. 목표는 N개의 랜선을 만들 수 있는 최대 길이를 구하는 것입니다. 접근 방법 이 문제는 가능한 최대 길이를 찾기 위해 이진 탐색을 사용하는 방법으로 접근할 수 있습니다.랜선을 만들 수 있는 최소 길이 min = 1과 최대 길이 max = 가장 긴 랜선의 길이를 설정하고, 이진 탐색으로 길이를 탐색합니다.mid를 현재 중간 길이로 설정한 후, 모든 랜선을 mid 길이로 자를 때 총 몇 개의 랜선을 만들 수 있는지 계산합니..

문제/백준 2024.10.25