사자자리
[C언어] 백준 1296번: 팀 이름 정하기 본문
https://www.acmicpc.net/problem/1296
1296번: 팀 이름 정하기
연두는 프로그래밍 대회에 나갈 팀 이름을 정하려고 한다. 미신을 믿는 연두는 이환이에게 공식을 하나 받아왔고, 이 공식을 이용해 우승할 확률이 가장 높은 팀 이름을 찾으려고 한다. 이환
www.acmicpc.net
#include <stdio.h>
#include <string.h>
int main(){
char mine[21], team[50][22], result[21];
int win[50];
int l = 0, o = 0, v = 0, e = 0;
int L, O, V, E;
int n, max = -1;
scanf("%s", mine);
for (int j = 0; j < strlen(mine); j++){ //내 이름의 LOVE 개수 세기
if (mine[j] == 'L') l++;
else if (mine[j] == 'O') o++;
else if (mine[j] == 'V') v++;
else if (mine[j] == 'E') e++;
}
scanf("%d", &n);
for (int i = 0; i < n; i++){
scanf("%s", team[i]);
L = l, O = o, V = v, E = e;
for (int j = 0; j < strlen(team[i]); j++){ //팀 이름의 LOVE 개수 더하기
if (team[i][j] == 'L') L++;
else if (team[i][j] == 'O') O++;
else if (team[i][j] == 'V') V++;
else if (team[i][j] == 'E') E++;
}
win[i] = ((L+O)*(L+V)*(L+E)*(O+V)*(O+E)*(V+E)) % 100;
}
for (int i = 0; i < n; i++){
if (max < win[i]){ //우승 확률이 더 높을 경우
max = win[i];
strcpy(result, team[i]);
}
else if (max == win[i]){ //우승 확률이 같을 경우
if (strcmp(result, team[i]) > 0){
strcpy(result, team[i]);
}
}
}
printf("%s\n", result);
return 0;
}
확률을 구하는 공식에서 mod는 나머지 연산을 뜻한다. C언어에서 %연산자로 계산할 수 있다.
우승 확률을 계산하고 서로 비교하는 방법은 바로 떠올랐지만, 어려웠던 부분은 우승 확률이 같았을 때였다. 팀 이름을 알파벳 순서로 비교하기 위해서는 strcmp 함수가 필요했다. strcmp 함수에서 왼쪽의 알파벳 순서가 뒤에 있을 경우에 양수가 나오고, 반대의 경우엔 음수가, 같을 경우엔 0이 나오는 것을 이용했다.
'C언어 > C언어 문제' 카테고리의 다른 글
[C언어] 백준 1371번: 가장 많은 글자 (0) | 2022.07.31 |
---|---|
[C언어] 백준 1356번: 유진수 (0) | 2022.07.31 |
[C언어] 백준 1259번: 팰린드롬수 (0) | 2022.07.24 |
[C언어] 백준 1547번: 공 (0) | 2022.07.15 |
[C언어] 백준 2755번: 이번학기 평점은 몇점? (0) | 2022.07.15 |
Comments