[BOJ] 6987. 월드컵 - JAVA
🔗 문제 👨🏻💻 풀이 및 코드 문제 유형 및 난이도 : 브루트포스, 백트랙킹 / G4 나한텐 좀 어려웠다. 처음엔 단순하게 한 개의 팀이 경기를 하는 횟수가 5여야 하고, 진 횟수와 이긴 횟수를 비교하고, 비긴 횟수가 짝수로 떨어지면 될 거라고 생각했는데 다른 사람들 해설을 참고하니 아예 접근 방식이 틀리고 완탐 + 백트랙킹으로 푸는 문제였다. 일단 조건을 찬찬히 살펴보자. 총 6개의 팀이 있다. A, B, C, D, E, F 한 번 경기를 치룬 팀과는 경기를 다시 치루지 않는다. 이 때 치르게 되는 총 경기의 횟수는 얼마일까? A - B, C, D, E, F B - C, D, E, F C - D, E, F D - E, F E - F 이렇게 총 15번 이다. (5 + 4 + 3 + 2 + 1) 이 경우..
2023. 5. 15.
[BOJ] 10986. 나머지 합 - JAVA
🔗 문제 10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net 💻 풀이 및 코드 문제 유형 : 수학, 누적합 주어진 배열 중 구간(i, j) 합 이 M 으로 나누어 떨어져는 구간의 갯수를 구하는 문제 풀이 시간 복잡도 : O (N) 문제를 풀기 앞서, 아래의 모듈러 연산의 분배 법칙을 알고 있어야 한다. 문제에 나와있는 '연속된 부분 구간의 합이 M 으로 나누어 떨어지는' 이라는 의미를 생각해보자. 어떠한 구간 [a, b] 에 대해 '[a, b] 구간합 == [1, b..
2023. 3. 15.