https://www.acmicpc.net/problem/23348
1. 문제
대한민국 최고의 알고리즘 동아리를 찾기 위한 리얼리티 서바이벌. 잔혹한 코딩판에서 살아남기 위한 대학생들의 자존심을 건 생존 경쟁이 시작된다!
스트릿 코딩 파이터는 최근 모임을 갖지 못하게 된 알고리즘 동아리들을 위해 방송사에서 제작한 특별 프로그램이다.
참가한 동아리들은 3인 1팀으로 팀을 구성해 각자 라이브로 문제를 풀고 심사를 받는다.
심사기준은 정답과 상관없이 멋있게 문제를 푸는 사람들이 유리한 점수를 가져가게 되는데, 이때 점수가 부여되는 공식적인 기술은 '한손 코딩', '노룩 코딩', '폰코딩'으로 총 3가지이고, 각 기술들에는 난이도가 다르게 부여된다.
심사 방식은 다음과 같다.
- 동아리의 총 점수는 구성원들의 개인 점수 합이다.
- 개인 점수는 세 가지 기술 점수의 합이다.
- 기술 점수는 해당 기술의 난이도와 사용한 횟수를 곱한 값이다.
예를 들어 '한손 코딩', '노룩 코딩', '폰코딩'의 난이도가 각각 3, 6, 9이며 플레이어 P가 위 기술을 각각 1, 2, 3번 보여주었다면, P의 점수는 ( 3 × 1 ) + ( 6 × 2 ) + ( 9 × 3 ) = 42점이 된다.
기술의 난이도와 동아리 별 각 팀원들이 사용한 기술의 횟수가 주어진다. 가장 높은 점수를 받은 동아리의 점수는 몇 점인지 구하는 프로그램을 작성하시오.
2. 입력
첫째 줄에 세 가지 기술의 난이도 A, B, C가 '한손 코딩', '노룩 코딩', '폰코딩' 순서대로 공백을 사이에 두고 주어진다. (0 ≤ A , B , C ≤ 1,000)
둘째 줄에 참가한 동아리의 수 N이 주어진다. (1 ≤ N ≤ 1,000)
셋째 줄부터 3N 개의 줄에 걸쳐 세 줄마다 각 동아리의 기술 사용 정보가 주어진다.
세 개의 줄에는 각 줄마다 동아리를 구성하는 각 동아리원이 사용한 기술의 횟수 a, b, c가 '한손 코딩', '노룩 코딩', '폰코딩' 순서대로 공백을 사이에 두고 주어진다. (0 ≤ a , b , c ≤ 100)
3. 출력
첫째 줄에 가장 높은 점수를 받은 동아리의 점수를 출력한다.
4. 풀이
난이도 점수와 동아리 수를 입력받은 후
동아리 개수만큼 반복 주고
한 동아리의 기술 점수와 기술 사용 횟수 3 * 3번을 입력은 for 문 j, k를 생성합니다.
그럼 두 번째 for 문은 012 012 012 돌아 가니까
~[k] * 기술 점수 해주고
결괏값을 누적시킨 다음
누적값이 다른 동아리보다 크면 저장해줍니다!
5. 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#include <stdio.h>
int main(void) {
int phy[3] = { 0, }; //점수
int n; //줄바꿈
int a[3]; //기술사용횟수
int s, sum = 0, max = 0;
for (int i = 0; i < 3; i++) { //기술점수 입력
scanf("%d", &phy[i]);
}
scanf("%d", &n);
for (int i = 0; i < n; i++) { //동아리만큼 반복
sum = 0;
for (int j = 0; j < 3; j++) {
for (int k = 0; k < 3; k++) {
scanf("%d", &a[k]);//a0 a1 a2
s = a[k] * phy[k];
sum += s;
if (max < sum) max = sum;
}
}
}
printf("%d", max);
}
|