문제 링크 : http://codeforces.com/contest/1287 A. Angry Students 문제 요약 Angry Students와 Patient Students가 있을 때, 최대의 Angry Student를 만들기까지 걸리는 시간을 구하는 문제이다. 접근 방법 P가 A보다 앞에 있으면 앞의 P는 절대 A로 변하지 않으므로, 이것을 제외한 후 P 앞에 있는 A를 대상으로 A 뒤에 있는 P의 개수 중 최댓값을 구하였다. 시간복잡도 O(n) #include using namespace std; int solution(string& S) { int init = 0; for(int i = 0; i < S.length(); i++) { init = i+1; if(S[i] == 'A') break;..
문제 링크 : https://codeforces.com/contest/1270 A. Card Game 문제 요약 숫자가 적혀 있는 N개의 카드(1~N, 중복 없음)로 카드 게임을 하는데, 카드 패에 따른 승자를 출력하는 문제이다. 접근 방법 결국 승자는 제일 높은 수가 적힌 카드를 가진 사람이므로, N을 누가 가지고 있는지 체크하여 문제를 풀면 된다. 시간복잡도 입력을 받으면서 확인을 했으니, O(n)이라고 해야할지 O(1)이라고 해야할지 모르겠지만, O(n)이 맞는 것 같다. #include #include #include using namespace std; int main(void) { int test_cases; cin >> test_cases; for(int i = 0; i < test_case..
문제 링크 : https://codeforces.com/contest/1282 A. Temporarily unavailable 문제 요약 어떤 범위 안의 직선에서 기지국이 커버를 할 수 없는 범위의 길이를 반환하는 문제이다. 접근 방법 직선의 양 끝 점을 a, b라고 하고, 기지국을 c라고 하면 3가지의 경우가 나온다. c-a-b, a-c-b, a-b-c의 경우가 되는데, 이에 맞추어서 공식을 유도하여 접근하면 된다. 시간복잡도 단순 공식 사용이므로 O(1) #include #include using namespace std; int solution(int a, int b, int c, int r) { //c의 커버리지 r이 a-b 직선에 닿지 않으면 원하지 않는 값이 출력되므로 min 사용 return..
