알고리즘 1624

백준 12852번 1로 만들기 2

문제 링크입니다: https://www.acmicpc.net/problem/12852 연산을 하는 횟수의 최솟값은 DP를 통해 간단하게 구할 수 있는 문제였습니다.문제는 " N을 1로 만드는 방법에 포함되어 있는 수"를 출력하는 것이었는데 이는 DP에 사용했던 cache 배열을 역추적하며 구할 수 있었습니다.테스트해 본 결과 top-down 방식으로 구현할 경우 N이 100만 일 때 stackoverflow가 발생하는 것 같은데 AC를 받는 것으로 보아 데이터 추가가 필요해 보입니다.  개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.05.06

백준 2670번 연속부분최대곱

문제 링크입니다: https://www.acmicpc.net/problem/2670 그리디 하게 접근한 문제였습니다.구간을 점차 확장하면서, 현재 구간의 연속 부분곱보다 현재 구간의 끝에 위치한 숫자가 큰 경우, 구간의 시작을 초기화하는 방식으로 문제를 해결했습니다. 문제의 예제 입력을 예로 들자면 다음과 같습니다. 구간구간의 연속부분곱현재 구간의 끝에 위치한 숫자연속부분최대곱[0, 0]1.11.11.1[0, 1]0.770.71.1[0, 2]1.0011.31.1[2, 2]1.31.31.3[2, 3]1.170.91.3[2, 4]1.6381.41.638[2, 5]1.31040.81.638[2, 6]0.917280.71.638[2, 7]1.2841921.41.638[7, 7]1.41.41.638   개발환경:..

알고리즘/BOJ 2024.05.05

백준 1269번 대칭 차집합

문제 링크입니다: https://www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net set 자료구조를 적절히 사용하면 쉽게 풀 수 있는 문제였습니다. 개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.04.24

백준 7795번 먹을 것인가 먹힐 것인가

문제 링크입니다: https://www.acmicpc.net/problem/7795 7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net lower_bound를 적절히 사용하면 쉽게 풀 수 있는 문제였습니다. 개발환경:Visual Studio 2022 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

알고리즘/BOJ 2024.04.24

백준 12094번 2048 (Hard)

문제 링크입니다: https://www.acmicpc.net/problem/12094 12094번: 2048 (Hard) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 백준 12100번 2048 (Easy)와 달리 N이 10이기 때문에 단순 백트래킹만으로는 TLE가 발생하는 문제였습니다. 따라서 적절한 가지치기가 필요했으며 가지치기하는 기준은 다음과 같습니다. 보드 위에 있는 전체 블록을 한 방향으로 이동시켰을 때 블록 상태가 변하는지 여부 현재까지 구한 블록의 최댓값보다 다음 보드 상태에서 기대할 수 있는 블록의 ..

알고리즘/BOJ 2024.04.21