
이번 글을 통해 배워갈 내용
- 백준 2953번 풀이
- 간단한 클래스 및 배열 연습
https://www.acmicpc.net/problem/2953
2953번: 나는 요리사다
"나는 요리사다"는 다섯 참가자들이 서로의 요리 실력을 뽐내는 티비 프로이다. 각 참가자는 자신있는 음식을 하나씩 만들어오고, 서로 다른 사람의 음식을 점수로 평가해준다. 점수는 1점부터 5
www.acmicpc.net
백준 2953번 나는 요리사다는
난이도 쉬움 등급의 문제로서
5명의 요리대회 참가자가 4개의 점수를 받았을때
가장 높은 점수를 받은 참가자를 찾는 프로그램을 만드는
기본을 배울수 있는 좋은 문제입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
일단 해당 문제에서 20개의 입력을 받습니다
4 4 3 3
5 4 3 5
5 5 2 4
5 5 5 1
4 4 4 4
저는 ChefContest 라는 클래스를 선언하고
class ChefContest
{
private:
int result[5][4];
int sum;
int contestantNo;
int winner;
public:
ChefContest();
~ChefContest();
void ContestResult();
void FindWinner();
};
생성자 와 소멸자를 정의 하였습니다
ChefContest::ChefContest()
{
sum = 0;
contestantNo = 0;
winner = 0;
}
ChefContest::~ChefContest()
{
delete[] result;
}
result[5][4] 안에 결과를 입력하려고 하였습니다.
그러나 생성자에 배열을 정의 하지 않았습니다.
이유는 배열이 필요가 없기 때문입니다
지금 쯤 눈치 빠른 분들은 아시겠지만
void ChefContest::ContestResult()
{
for (int i =0; i<5;i++)
{
contestantNo++;
int a1,a2,a3,a4;
cin >> a1 >> a2 >> a3 >> a4;
int tempSum = a1 + a2 + a3 + a4;
if(sum < tempSum)
{
sum = tempSum;
winner = contestantNo;
}
}
};
위와 같이 입력 할때마다 승자를 찾아주면 배열을 사용할 필요가 없습니다.
복잡도도 O(n)으로 진행이 가능합니다.
우승자를 찾아준 다음
void ChefContest::FindWinner()
{
cout<<winner << " " << sum;
};
위와 같이 출력만 해주면 되는 간단한 프로그램이였습니다.
전체 코드는 다음과 같습니다
#include <iostream>
using namespace std;
class ChefContest
{
private:
int result[5][4];
int sum;
int contestantNo;
int winner;
public:
ChefContest();
~ChefContest();
void ContestResult();
void FindWinner();
};
ChefContest::ChefContest()
{
sum = 0;
contestantNo = 0;
winner = 0;
}
ChefContest::~ChefContest()
{
delete[] result;
}
void ChefContest::ContestResult()
{
for (int i =0; i<5;i++)
{
contestantNo++;
int a1,a2,a3,a4;
cin >> a1 >> a2 >> a3 >> a4;
int tempSum = a1 + a2 + a3 + a4;
if(sum < tempSum)
{
sum = tempSum;
winner = contestantNo;
}
}
};
void ChefContest::FindWinner()
{
cout<<winner << " " << sum;
};
int main()
{
ChefContest* chefContest = new ChefContest();
chefContest->ContestResult();
chefContest->FindWinner();
return 0;
}
입력
4 4 3 3
5 5 3 5
5 5 2 4
5 5 5 1
4 4 4 4
결과
2 18
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩하시길 바랍니다 ~ :)
참조 및 인용
C++ Primer
'C++ > C++ 알고리즘' 카테고리의 다른 글
| 백준2667번 단지번호 붙이기 C++로 구현해보기 (1) | 2021.07.05 |
|---|---|
| 백준1919번 애너그램 만들기(Anagram) C++로 구현해보기 (1) | 2021.07.03 |
| 백준1914번 하노이 탑(Hanoi tower) C++로 구현해보기 (1) | 2021.06.20 |
| 백준 2407번 nCr 조합 찾기 (1) | 2021.06.20 |
| C++과 테일러 급수로 sin(x), cos(x), e^x 값 계산해보기 (1) | 2021.06.19 |