피너클의 it공부방
백준 1268 임시 반장 정하기 (c++) : 피너클 본문
728x90
반응형
https://www.acmicpc.net/problem/1268
1268번: 임시 반장 정하기
첫째 줄에는 반의 학생 수를 나타내는 정수가 주어진다. 학생 수는 3 이상 1000 이하이다. 둘째 줄부터는 1번 학생부터 차례대로 각 줄마다 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 5
www.acmicpc.net
간단한 구현문제다.
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 5; j++) {
cin >> arr[i][j];
}
}
n을 입력받고 n만큼의 학생의 데이터를 입력받는다.
int ban = 1001, stu = -1;
for (int i = 1; i <= n; i++) {
int sol = solve(i);
if (sol > stu) {
stu = sol;
ban = i;
}
}
cout << ban << endl;
int ban은 반장의 번호고 stu는 같은 반을 한 학생의 수다.
n번 반복하며
만약 solve(i)를 통해 얻은 i가 지금까지 같은 반을 한 학생의 수가 stu보다 크다면
stu에 sol을 넣고 ban에 i를 넣는다.
반복문을 모두 돌린 후 ban을 출력한다.
int solve(int num) {
int ans = 0;
vector<bool> v;
v.resize(n + 1);
int solve함수는 int num을 전달받는다.
int ans는 학생의 수를 나타낸다.
vector<bool>을 선언한후 resize를 통해 n+1만큼의 공간을 할당한다.
for (int i = 1; i <= n; i++) {
if (i == num) continue;
for (int j = 1; j <= 5; j++) {
if (arr[num][j] == arr[i][j]) {
v[i] = true;
break;
}
}
}
n명의 학생이 있기 때문에 n만큼 반복하며 i와 num이 같다면 뒤의 반복문은 지나간다.
5개의 반이 있기 때문에 5번 반복하며 만약 num과 i가 한번이라도 같은 반이었던 적이 있다면
v[i] = true로 바꾸도 반복문을 빠져나온다.
for (int i = 1; i <= n; i++)
if (v[i]) ans++;
return ans;
}
v안의 true만큼 ans++를 하고 리턴한다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <string.h>
using namespace std;
int n;
int arr[1001][6];
int solve(int num) {
int ans = 0;
vector<bool> v;
v.resize(n + 1);
for (int i = 1; i <= n; i++) {
if (i == num) continue;
for (int j = 1; j <= 5; j++) {
if (arr[num][j] == arr[i][j]) {
v[i] = true;
break;
}
}
}
for (int i = 1; i <= n; i++)
if (v[i]) ans++;
return ans;
}
int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 5; j++) {
cin >> arr[i][j];
}
}
int ban = 1001, stu = -1;
for (int i = 1; i <= n; i++) {
int sol = solve(i);
if (sol > stu) {
stu = sol;
ban = i;
}
}
cout << ban << endl;
}
전체코드다.
728x90
반응형
'백준' 카테고리의 다른 글
백준 11053 가장 긴 증가하는 부분 수열 (c++) : 피너클 (0) | 2022.05.05 |
---|---|
백준 11660 구간 합 구하기 5 (c++) : 피너클 (0) | 2022.05.05 |
백준 1259 팰린드롬수 (c++) : 피너클 (0) | 2022.05.02 |
백준 1039 교환 (c++) : 피너클 (0) | 2022.04.29 |
백준 1331 나이트 투어 (c++) : 피너클 (0) | 2022.04.28 |
Comments