오블완(21)
-
[BOJ_Python] 15663 ~15666. N과 M 시리즈 3 (9 ~ 12)
문제N과 M(9) : https://www.acmicpc.net/problem/15663N과 M(10) : https://www.acmicpc.net/problem/15664N과 M(11) : https://www.acmicpc.net/problem/15665N과 M(12) : https://www.acmicpc.net/problem/15666 사용 알고리즘Backtracking 풀이후기1. 이번 시리즈의 keypoint는 중복되는 숫자 처리이다. N과 M 시리즈 1(1 ~ 4)와 로직이 비슷하나 동일 숫자의 중복 처리가 더해져 조금 더 까다로웠다.2. 백트레킹 유형을 통해 중복 수를 활용한 순열과 조합 등의 방식을 직접 구현 할 수 있었다. 15663. N과 M (9) 1. 이 문제가 이후 문제 풀이에..
2024.11.27 -
[BOJ_Python] 15654 ~ 15657. N과 M 시리즈 2 (5 ~ 8)
문제N과 M(5) : https://www.acmicpc.net/problem/15654N과 M(6) : https://www.acmicpc.net/problem/15655N과 M(7) : https://www.acmicpc.net/problem/15656N과 M(8) : https://www.acmicpc.net/problem/15657 사용 알고리즘Backtracking 풀이후기1. 이번 시리즈는 N과 M 시리즈 1(1 ~ 4)와 로직은 동일하나 연속된 수가 아닌 입력받은 수로 진행하는 문제이다.때문에 로직에 큰 변화없이 입력받은 수를 가지고 저번과 동일하게 진행하였다.2. 백트레킹 유형을 통해 입력받은 수로 순열과 조합 등의 방식을 직접 구현 할 수 있었다.15654. N과 M (5) 1. 이 문제..
2024.11.26 -
[BOJ_Python] 15649 ~ 15652. N과 M 시리즈 1 (1 ~ 4)
문제https://www.acmicpc.net/problem/15649https://www.acmicpc.net/problem/15650https://www.acmicpc.net/problem/15651https://www.acmicpc.net/problem/15652 사용 알고리즘Backtracking 풀이후기1. 이 문제 시리즈는 큰 틀은 비슷하고 조건에 따라 약간의 변화를 추가한 백트레킹 문제이다.백트레킹은 주로 들어가기 전에 해준 처리를 나와서 초기화 시키며 진행하는 방법을 사용한다.2. 백트레킹 유형을 통해 순열과 조합 등의 방식을 직접 구현 할 수 있었다. 15649. N과 M (1) 1. 이 문제가 이후 문제 풀이에 가장 기초 틀이 되는 문제이다.2. 1부터 N까지 자연수 중에서 중복 없이 ..
2024.11.25 -
[BOJ_Python] 20500.Ezreal 여눈부터 가네 ㅈㅈ
문제https://www.acmicpc.net/problem/20500 사용 알고리즘DP 풀이고려사항1. 1과 5로만 구성된 수인지2. 15의 배수인지 후기1. 이 문제의 경우 가능한 수의 범위가 크기 때문에 DP로 진행하였다.2. 우선, dp배열에는 digit 자리 숫자 중에서 각 자리 수가 1 또는 5로만 구성되며, 15로 나눈 나머지가 mod15인 경우의 수를 저장한다. dp[0][0]을 1로 초기 세팅을 진행한다.3. 이후 자리수를 늘리며 이전 자리 수까지의 숫자들에서 15로 나눈 나머지 값을 기반으로 새로운 자리 수를 추가했을 때 나머지를 계산한다. - 현재 나머지 mod15에 1 또는 5의 숫자를 추가하여 새로운 나머지를 계산한다. - 이전 자리 수까지 mod15였던..
2024.11.24 -
[BOJ_Python] 1309.동물원
문제https://www.acmicpc.net/problem/1309 사용 알고리즘DP 풀이고려사항1. 현재 위치에서 상하좌우에 사자가 존재하는지2. 상하좌우에 사자가 존재하지 않는다면 사자를 놓을 것인지 후기1. 이 문제의 keypoint는 점화식을 찾는 것이다.우선 한 줄씩 늘려보면n = 1인 경우 아래와 같은 방법으로 3가지 경우의 수가 존재한다.n = 2인 경우 - 아무것도 없는 경우에 n = 1과 같이 3가지 경우 - 한 마리가 있는 경우에 사자를 놓지 않거나 반대편에 놓는 경우 즉, 2 * 2 = 4가지 경우의 수가 존재하므로 - 총 7가지 경우의 수가 존재한다. 이런 방법으로 점화식을 찾다보면두 쪽 모두 비어 있는 경우 * 3 + 사자가 한 쪽에 존재하는 경우 * 2의 규칙을 발견할 ..
2024.11.23 -
[BOJ_Python] 2110.공유기 설치
문제https://www.acmicpc.net/problem/2110 사용 알고리즘이분탐색 풀이고려사항1. 가장 인접한 거리 확인하기 후기1. 이 문제의 keypoint는 이미 설치 후 거리를 확인하는 것이 아니라,거리를 먼저 설정하고 그 거리보다 멀리 몇 개의 공유기가 설치 될 수 있는지를 확인하는 것이다.먼저 공유기를 설치 후 진행하게 되면 확인 해야 할 범위가 큰 경우 시간초과가 발생한다.때문에 이분탐색을 통해 거리를 먼저 설정 후 공유기 설치 가능 갯수를 확인하며거리의 범위를 조절해 가는 것이 효율적이다.2. 이때 최대한 최적화를 시키기 위해 end의 범위도 변경해주었다.원래는 max값을 기준으로 설정하여 진행하지만,여기서의 max 값은 마지막 집이 아니라 마지막 집에서 첫 집의 거리를 뺀 총 거..
2024.11.22