백준 12850: 본대 산책2
https://www.acmicpc.net/problem/12850 이 문제는 보자마자 어떻게 풀어야 할 지 막막했다. 태그는 "분할 정복을 이용한 거듭제곱"인데, 이거를 어떻게 사용해야할 지 감이 전혀 잡히지 않았다. 그럼에도 정답률은 80%를 넘기니, 내가 모르는 테크닉이 있는것 같아서, 결국 구글링을 하였다. 결론부터 말하자면 아니였다. 충분히 내가 알고 있던 지식 내에서 해결할 수 있는 문제였다. 중요한 점은 그래프를 행렬로 나타낼 수 있다는 것이다. 문제에서 주어진 그래프를 인접행렬로 나타내면 다음과 같다.{0, 1, 1, 0, 0, 0, 0, 0},{1, 0, 1, 1, 0, 0, 0, 0},{1, 1, 0, 1, 1, 0, 0, 0},{0, 1, 1, 0, 1, 1, 0, 0},{0, 0, ..
백준 1222: 홍준 프로그래밍 대회
오늘 푼 문제는 백준 1222: 홍준 프로그래밍 대회이다.https://www.acmicpc.net/problem/1222 일단 문제를 보고 처음 떠올린 답안은 1~2000000까지 전부 순회해서 답을 구하는 것이였다.하지만, 배열의 길이가 최대 200,000이 만큼 시간초과는 피할 수 없기에 이 안은 포기하고 다른 안을 모색하였다.문득, 이러한 문제는 에라토스테네스의 체를 변형시켜 사용하는 게 좋을 거란 생각이 들었고, 새로운 안이 떠오르기 시작하였다. 에라토스테네스에서 약수를 구하는 방법이 있는데, 이 방법을 변형시켜서, 각 2,000,000의 최소 약수를 구하고, 입력 배열을 순회하며, 각 값의 최소 약수를 카운팅한다. 그리고 최종적으로 (카운팅 된 값 * 최소 약수)로 값을 구하는 것이 어떠한 가..