https://www.acmicpc.net/problem/2876
2876번: 그래픽스 퀴즈
오늘은 기초컴퓨터그래픽스의 퀴즈가 있는 날이다. 기다란 교실 안에는 N개의 책상이 한 줄로 늘어서 있는데, 각 책상당 두 명의 학생이 앉도록 되어있다. 모든 학생들은 그래픽스를 열심히
www.acmicpc.net
문제를 이해하는데 꽤나 어려움이 있었다.
또한 dp로 풀 수 있는 생각이 잘 들지 않아서 블로그를 참조했다.
문제 이해 & 풀이 방식에 대한 설명이 나와있다. 다만 예전 채점방식으로 한 틀린 알고리즘이라 몇 줄 추가해야 한다.
https://bconfiden2.tistory.com/290
[백준] 2876 : 그래픽스 퀴즈
https://www.acmicpc.net/problem/2876 2876번: 그래픽스 퀴즈 오늘은 기초컴퓨터그래픽스의 퀴즈가 있는 날이다. 기다란 교실 안에는 N개의 책상이 한 줄로 늘어서 있는데, 각 책상당 두 명의 학생이 앉도록
bconfiden2.tistory.com
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <map>
#include <queue>
#include <string>
#include <cstring>
using namespace std;
using ll = long long;
int t, a, b;
int grades[100001][6] = { 0, }; // grade 저장용
int maxval = 0, minidx = 6; //횟수, 그레이드
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> t;
for (int i = 1; i <= t; i++) {
cin >> a >> b;
grades[i][a] = grades[i - 1][a] + 1; //이전 책상까찌의 값 + 1
if (grades[i][a] > maxval) { //최댓값 갱신
maxval = grades[i][a];
minidx = a;
}
else if (grades[i][a] == maxval && minidx > a) { //횟수가 같으면서 그레이드가 낮은 경우
maxval = grades[i][a];
minidx = a;
}
if (a != b) { //a와 b가 같지 않을 때 b 판별
grades[i][b] = grades[i - 1][b] + 1; //이전 책상까지의 값 + 1
if (grades[i][b] > maxval) { //최댓값 갱신
maxval = grades[i][b];
minidx = b;
}
else if (grades[i][b] == maxval && minidx > b) { //횟수 같으면서 그레이드 낮은 경우
maxval = grades[i][b];
minidx = b;
}
}
}
cout << maxval << " " << minidx << '\n';
return 0;
}
'PS > BOJ' 카테고리의 다른 글
[백준] 2559. 수열(c++) (1) | 2024.04.28 |
---|---|
[백준] 15721. 번데기(c++) (0) | 2024.04.27 |
[백준] 5883. 아이폰 9S(c++) (0) | 2024.04.26 |
[백준] 15993. 1, 2, 3 더하기 8(c++) (1) | 2024.04.26 |
[백준] 10798. 세로읽기(c++) (0) | 2024.04.25 |