어느덧 아무것도 할 줄 모르는 4학년이 되고 졸업유예를 한 상태로 마지막이 될 ICPC를 도전해보기로 했다. 거의 3년은 알고리즘을 쉬었기에 기존의 모든 알고리즘 지식을 잃어버린 상태로 맨 처음부터 시작한다는 마음가짐으로 공부를 시작했다. 블로그도 2년만에 들어와봤는데, 공부한 것을 정리할 겸 다시 기록해보고자 한다.


1주차
우선 현재 상태를 점검하고자 S3-G3 난이도의 문제들을 랜덤으로 돌리면서 실수는 많지만 그래도 빠르게 빠르게 문제를 풀어 1주차가 끝나는 시점인 6-7일차에 골랜디를 시작할 수 있게 되었다.
2주차
1주차에 자체 점검을 가진 이후로 골랜디를 진행하고 있던 와중 실수가 너무 많다고 느껴 9일차부터 구현 문제에 한해서 골랜디를 진행 중이다. 아래 문제는 9일차 밤 ~ 10일차에 진행했던 구현 문제들이다.
+ 02, 03 게시글을 작성하는 도중에 백준 서비스 종료 소식을 듣고, 출제하였던 대회 문제들을 QOJ로 옮기는 등의 작업을 진행하였다. 빠르게 플랜디, 다이아 일부 문제 해결까지 실력 복구를 해가던 와중 이렇게 되어 다시 한동안 알고리즘 문제를 풀지 않고 있지만 백준이 돌아온다고 하니 기다려본다. 돌아오기 전까지는 코포 virtual이라도 시간 날 때마다 돌려야겠다.
1089. 스타트링크 타워
일일이 순환하며 숫자를 표현 가능한지 확인할 수 있지만, 비트마스팅을 통해 포함 관계를 구하는 것이 용이하도록 전처리를 진행해주었다. 평균은 모든 경우의 수를 모두 더하는 것은 오래 걸리니 일의 자리부터 나올 수 있는 숫자들의 합을 그 개수로 나눈 후, $10^N$꼴을 곱하여 모두 더해주는 것으로 구할 수 있었다.
16434. 드래곤 앤 던전
체력이 H인 적을 죽이기 위해 공격력이 A인 대상이 공격해야 하는 횟수는 $\lceil \frac{H}{A} \rceil$이 된다. 용사가 먼저 공격을 진행하는 것을 유의한다면 방을 탐색하는 코드는 문제 없이 해결할 수 있다. 나머지는 Pharametric Search를 통해 최대 체력이 H인 경우 용을 잡을 수 있는가? 를 확인하면 된다.
20056. 마법사 상어와 파이어볼
파이어볼을 구조체로 관리하며 그대로 구현해주면 쉽게 풀 수 있었다.
10836. 여왕벌
$(row, col - 1)$, $(row - 1, col - 1)$, $(row - 1, col)$의 모든 애벌레가 성장해야 $(row, col)$의 애벌레가 성장하므로 제일 왼쪽 열과 제일 위쪽 행의 성장만으로 $N$일차의 모든 애벌레의 크기를 구할 수 있다.
즉, 매번 모든 애벌레의 성장을 갱신하는 것이 아닌 마지막 한 번만 갱신해주면 된다.
17779. 게리맨더링 2
5번 선거구 영역을 채운 후 나머지 선거구를 채워주면 된다. 1, 2, 3, 4번 선거구를 직사각형 모양으로 덮으려고 했다가 겹치는 것을 고려하지 않아 틀렸었다.
21609. 상어 중학교
무지개 블록 탐색과 제거할 블록 그룹의 우선순위, 검은색 블록만 유의하며 작성해주면 된다.
34878. Magic Door
위의 문제와 마찬가지로 우선순위를 잘 고려해서 작성해주면 된다.
'알고리즘' 카테고리의 다른 글
| [BOJ 2829] 아름다운 행렬 (0) | 2024.04.29 |
|---|---|
| [BOJ 17952] 과제는 끝나지 않아! (0) | 2024.04.29 |
| [BOJ 22862] 가장 긴 짝수 연속한 부분 수열 (large) (1) | 2024.04.02 |
| [BOJ 22858] 원상 복구 (small) (0) | 2024.04.02 |
| [BOJ 11508] 2+1 세일 (0) | 2024.04.01 |