Koder / 박성훈
article thumbnail
백준 BOJ 16927 - 배열 돌리기 2
알고리즘/백준 BOJ 2023. 7. 23. 21:57

https://www.acmicpc.net/problem/16927 16927번: 배열 돌리기 2 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 입력으로 들어오는 회전수 R이 터무니없어서 뇌정지가 왔었던 문제. R이 터무니 없다는 부분에서 MOD연산을 활용해야한다는걸 눈치챌수 있다면 문제를 깔끔하게 해결할 수 있다. 입력으로 들어오는 배열을 겉껍질 한줄을 배열로, 그 안쪽 한줄을 배열로, 배열을 한껍질씩 벗겨가면서 도넛 모양의 화살표 고리를 하나..

article thumbnail
백준 BOJ 2229 - 조 짜기
알고리즘/백준 BOJ 2023. 7. 23. 21:48

https://www.acmicpc.net/problem/2229 2229번: 조 짜기 알고스팟 캠프에 N(1 ≤ N ≤ 1,000)명의 학생들이 참여하였다. 학생들은 열심히 공부를 하고 있었는데, 어느 날 조별 수업을 진행하기로 하였다. 조별 수업의 목적은 잘 하는 학생들과 덜 잘 하는 www.acmicpc.net DP 사용해서 해결한 문제. dp[k] : k명까지 조를 짰을때 잘 짜여진 정도의 최댓값 으로 정의한다. 또한, 인덱스 s부터 e까지의 사람들로 조를 편성했을때 조가 잘 짜여진 정도를 O(N) 에 구해내는 함수를 하나 작성하고, (for문을 통해 만들면 된다) 이를 cal(s,e)라고 정의한다. dp[1]은 당연히 0이 될 것이고, $k$보다 작거나 같은 수 $a$에 대해서 dp[a-1] +..

article thumbnail
백준 BOJ 18429 - 근손실
알고리즘/백준 BOJ 2023. 7. 23. 12:37

https://www.acmicpc.net/problem/18429 18429번: 근손실 웨이트 트레이닝을 좋아하는 어떤 대학원생은, 현재 3대 운동 중량 500의 괴력을 소유하고 있다. 다만, 하루가 지날 때마다 중량이 K만큼 감소한다. 예를 들어 K=4일 때, 3일이 지나면 중량이 488로 www.acmicpc.net 중량이 500 미만으로 떨어지는 일이 없도록하는 경우의 수를 구하는 문제. 입력으로 들어온 배열의 크기 N이 그렇게 크지 않아서 브루트포스를 통해 모든 경우를 다 생각해봐도 그리 오래 걸리지 않는다. 구현에는 c++의 next_permutation을 사용했다. 정렬된 배열에서 next_permutation을 사용하면 해당 배열을 통해 만들수 있는 모든 경우의 수를 한번씩 순회해 볼 수 ..

article thumbnail
백준 BOJ 8911 - 거북이
알고리즘/백준 BOJ 2023. 7. 23. 12:08

https://www.acmicpc.net/problem/8911 8911번: 거북이 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 컨트롤 프로그램이 주어진다. 프로그램은 항상 문제의 설명에 나와있는 네가지 명령으로만 이루어져 www.acmicpc.net 이동경로가 주어질때, 이동경로들을 모두 포함하는 가장 작은 직사각형의 넓이를 구하는 문제. 이 문제를 깔끔하게 풀기 위한 핵심으로써, L과 R의 회전방향을 일관적으로 유지만 해준다면 거북이가 처음 쳐다보고 있는 방향은 아무런 관련이 없다는 것이다. 거북이가 만일 남쪽을 바라보고 있다고 하더라도, 그림에서 나온 평면을 180도 뒤집어서 시뮬레이션 가능하고, 이 경우에도 넓이는 같기 때문이다. 그런 관계로 내가..

article thumbnail
백준 BOJ 14620 - 꽃길
알고리즘/백준 BOJ 2023. 7. 22. 23:06

https://www.acmicpc.net/problem/14620 14620번: 꽃길 2017년 4월 5일 식목일을 맞이한 진아는 나무를 심는 대신 하이테크관 앞 화단에 꽃을 심어 등교할 때 마다 꽃길을 걷고 싶었다. 진아가 가진 꽃의 씨앗은 꽃을 심고나면 정확히 1년후에 꽃이 피므 www.acmicpc.net 풀긴풀었다만 매우불쾌한문제;; N의 범위가 그리 크지 않아서 점 세개를 정하는 경우의 수를 브루트포싱해도 된다. 문제는 점 세개의 좌표를 정해주기 위해서 무려 "6중 포문" 이 필요하다는건데 ㅠㅠ x,y 좌표를 x*N+y로 뭉쳐서 3중포문으로 압축할 수 있다지만 일단 길고 장황하게 구현해봤다. 꽃들이 겹쳤는지 확인하기 위해서 tmp라는 배열에 꽃들을 직접 그려보고, 꽃으로 표시된 부분(1이다) ..

article thumbnail
백준 BOJ 14430 - 자원 캐기
알고리즘/백준 BOJ 2023. 7. 22. 22:51

https://www.acmicpc.net/problem/14430 14430번: 자원 캐기 인류의 차세대 인공지능 자원 캐기 로봇인 WOOK은 인간 대신 자원을 캐는 로봇이다. WOOK은 언제나 제한된 범위 내에서 자원을 탐색하며, 왼쪽 위 (1, 1)부터 오른쪽 아래 (N, M)까지 자원을 탐색한다. www.acmicpc.net DP로 해결했던 문제 DP[i][j] 를 $(i,j)$ 까지 이동해서 채취할 수 있는 최대 자원 으로 정의한다. $(i,j)$ 로 이동하는 경우는 $(i-1,j)$ 에서 이동한 경우 $(i,j-1)$ 에서 이동한 경우 두가지 경우가 있으므로, DP[i][j] = MAX( DP[i-1][j], DP[i][j-1] ) + arr[i][j] 로 계산해주면 정답을 얻을 수 있다. D..

반응형