본문 바로가기

백트래킹4

[프로그래머스] 이모티콘 할인행사 풀이 및 코드 분석 문제 링크1. 문제 분석📌 문제 개요각 이모티콘에 대해 할인율(10%, 20%, 30%, 40%)을 결정해야 함모든 사용자가 특정 할인율 이상의 이모티콘을 구매하며, 특정 금액 이상 사용하면 이모티콘 플러스에 가입목표:이모티콘 플러스 가입자를 최대로 늘리기이모티콘 판매 수익을 최대로 늘리기2. 해결 방법🔹 완전 탐색 (백트래킹)이모티콘 개수 E가 최대 7개로 적기 때문에, 4^E(= 4^7 = 16384) 경우의 수를 탐색해도 무리가 없음.각 이모티콘이 가질 수 있는 할인율 (10%, 20%, 30%, 40%) 중 하나를 선택하는 모든 경우의 수를 확인백트래킹을 사용하여 가지치기하면서 탐색 진행3. 코드 구현 (Java)class Solution { static int U, E; stati.. 2025. 3. 20.
[SWEA] 1952번 - 벌꿀채취 풀이 및 코드 분석 (Java) 문제 링크1. 문제 분석📌 문제 개요N x N 크기의 벌통 배열이 있다.두 명의 일꾼이 가로로 M개의 벌통을 선택하여 꿀을 채취해야 한다.두 일꾼의 선택한 벌통이 겹치면 안 된다.각 일꾼은 C 이하의 꿀만 채취 가능하며, 수익은 꿀의 양의 제곱합이다.최대 수익을 얻는 경우를 찾아야 한다.🎯 요구사항두 일꾼이 서로 겹치지 않는 위치에서 벌통을 선택해야 한다.각 일꾼이 채취할 꿀의 양이 C 이하인 경우의 수익을 계산해야 한다.두 일꾼이 얻을 수 있는 최대 수익을 구해야 한다.완전 탐색을 이용하여 가능한 모든 경우를 조사해야 한다.2. 해결 방법🔹 핵심 개념모든 가능한 조합을 완전 탐색(Brute Force)각 일꾼의 최대 수익을 구하는 방법: 부분집합 탐색(백트래킹)🔑 해결 절차모든 가능한 두 일꾼의.. 2025. 2. 28.
[SWEA] 4008번 - 숫자 만들기 풀이 및 코드 분석 (Java) 문제 링크1. 문제 분석📌 문제 개요주어진 N개의 숫자 사이에 연산자(+,-,×,÷)를 넣어 다양한 수식을 만들 수 있다.연산자의 우선순위 없이 왼쪽에서 오른쪽으로 연산이 수행된다.연산자 카드를 적절히 배치하여, 최댓값과 최솟값의 차이를 구하는 문제이다.🎯 요구사항각 연산자 카드는 반드시 모두 사용해야 한다.완성된 수식의 결과 중 최댓값과 최솟값을 찾고, 그 차이를 출력해야 한다.나눗셈(÷) 연산은 몫만 취급(소수점 이하 버림)해야 한다.숫자의 순서는 변경할 수 없다.가능한 모든 연산자 조합을 탐색해야 한다.N의 최대 크기가 12이므로, 브루트포스(백트래킹)로 해결 가능하다.2. 해결 방법🔹 핵심 개념이 문제는 연산자의 모든 가능한 조합을 탐색해야 하므로,백트래킹(Brute Force) 알고리즘을 .. 2025. 2. 27.
[SWEA] 1952번 - 수영장 풀이 및 코드 분석 (Java) 문제 링크1. 문제 분석📌 문제 개요김 프로가 1년 동안 가장 적은 비용으로 수영장을 이용하는 방법을 찾아야 한다.4가지 이용권 종류1일 이용권 → 특정 일만 사용 (X일 × 1일 이용권 가격)1달 이용권 → 해당 월 전체 이용 (1달 이용권 가격)3달 이용권 → 연속 3개월 이용 (3달 이용권 가격)1년 이용권 → 1년 전체 이용 (1년 이용권 가격)🎯 요구사항각 월의 이용 계획과 이용권 가격이 주어졌을 때,최소 비용을 계산하는 프로그램을 작성해야 한다.1년 동안 최적의 조합을 찾아야 하므로백트래킹(Brute Force) 또는 DP(최적화 탐색)을 활용해야 한다.2. 해결 방법🔹 핵심 개념각 월마다 4가지 이용권 중 하나를 선택해야 한다.완전 탐색(백트래킹)을 이용해 모든 경우를 시도한다.이전 선.. 2025. 2. 27.