2025/03/23 2

[백준/Python] 2470번 : 두 용액

문제https://www.acmicpc.net/problem/2470풀이이것도 나중에 다시 풀어봐야 할 문제다.투포인터로 풀면 쉽겠다고 생각했는데 점점 반례가 많아지면서 조건문을 덕지덕지 붙이게 됐다.오답노트처음 짠 코드를 보자. 탐색 시작 지점, 탐색 종료 조건, 포인터 이동 조건 모두 잘못됐다.left, right를 배열의 중간 지점(n//2)에서 시작해서 양쪽으로 옮기고 있음-> left, right의 탐색 시작점을 중간에서 시작하면 left, right 각각 양방향 중 어디로 포인터를 옮길지 결정해야 한다. -> 내 코드에서 가장 잘못된 선택임 이것 때문에 조건문이 이상하게 많이 붙었음. 투포인터를 사용하는 목적도 장점도 모르고 쓴 결과-> 양쪽에서 시작하면 left는 오른쪽으로만, right는 ..

정글/알고리즘 2025.03.23

[백준/Python] 10830번 : 행렬 제곱

문제https://www.acmicpc.net/problem/10830행렬 A의 B제곱을 구하는 문제이다. 1 ≤ B ≤ 100,000,000,000A^B의 각 원소를 1,000으로 나눈 나머지를 출력해야 하고 원소 개수 N에 대해 2 ≤ N ≤ 5를 만족한다. 풀이N번의 거듭제곱을 그냥 계산하면 시간 복잡도가 O(N)이다. 반면 분할 정복을 사용해 거듭제곱을 계산하면 O(logN) 안에 계산할 수 있다. 분할 정복을 이용한 거듭제곱# 분할정복을 사용한 거듭제곱 구현하기# 지수를 2로 나눈 나머지가 0인 횟수만큼 자기 자신과 곱셈하기 -> 시간 복잡도가 O(nlogn)n = 16 # 지수a = 2 # 밑ret = awhile n>=2: if n%2==0: # n이 짝수이면 ret *= r..

정글/알고리즘 2025.03.23