본문 바로가기

728x90

행렬

[백준알고리즘] 17829번: 222-풀링-C++ 17829번: 222-풀링 (acmicpc.net) 17829번: 222-풀링 조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Convolutional Neural Network, CNN)의 풀링 연산에 영감을 받아 자신만의 풀링을 만들고 이를 22 www.acmicpc.net 다른 문제를 풀다가.. 틀렸습니다에 고생하고 있다. 그래서 머리 식힐 겸 실버 문제를 풀어봤다. (그런데 한번 틀렸다 ㅎ) 이 문제가 가장 쉬운 형태의 분할 정복 문제 중의 하나라고 생각한다. 문제 풀이 분할 정복을 적용하면 쉽게 문제를 통과할 수 있다. 단순하게 큰 행렬(matrix)를 \(2 \times 2\) 크기로 나눠서 두 번째로 큰 값을 뽑아낸다. 그렇게 뽑아낸 값.. 더보기
[백준알고리즘] 1080번: 행렬 -Python [백준알고리즘] 1080번: 행렬 -Python https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 코드가 조금 지저분해보이기는 하지만 그리디 알고리즘을 사용했다. 반복문을 사용하지 않고 재귀를 통해서 문제를 해결했다. DFS방식의 재귀 깊이 때문에 런타임에러가 발생했었고, 모든 경우에 대해서 3x3을 변환시키고, 다시 원상태로도 진행을 하는 2가지 방법을 적용했었기 때문에 시간 초과가 발생했었다. 시간 초과가 발생한 경우에 대해서 더 설명을 하자면, 현재 위치.. 더보기
[백준알고리즘] 10830번: 행렬 제곱 -Python [백준알고리즘] 10830번: 행렬 제곱 -Python https://www.acmicpc.net/problem/10830 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 빠른 모듈로 거듭제곱을 개념을 이용해 행렬 곱셈을 수행했다. 분할 정복의 개념을 사용했고 아래와 같은 방식에 각 원소마다 모듈로를 해주는 것으로 수행했다. A^11 = A^10 * A^10 * A^1 A^8 = A^4 * A^4 코드 내용은 거의 같으나 @iknoom1107 님의 코드를 보니 for문으로 작성했던 부분을 sum()을 이용해 원소의 값을 구해.. 더보기

728x90