๋ฌธ์
https://www.acmicpc.net/problem/2852
์ค๋ช
์ญ์ ์ต๊ทผ๋ค์ด ์จ๋ผ์ธ ์ ์ง์ ๋ฌธ์ ๋ค์ ํ๋๊ฒ์ ๊ฒ์๋ฆฌ ํ์์ด์ ๊ทธ๋ฐ์ง ์ด๋ฐ ์ค๋ฒ์ ๋ ๋์ด๋์ ๋ฌธ์ ๋ ์๊ฐ์ด ์ข ์๊ฐ์ด ๊ฑธ๋ฆด์ ๋๋ก ์ค๋ ฅ์ด ๋ง์ด ๋จ์ด์ง ๊ฒ ๊ฐ๋ค. ์กฐ๊ธ๋ ๋ถ๋ฐ ํด์ผํ ๋ฏ ํ๋ค. ๐
์ด๋ฒ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์์ฑํ ๋ด ์ฝ๋์์ ์ ๋ฒ ๋ฌธ์ ์ฒ๋ผ ์ฃผ์๊น๊ฒ ์ดํด๋ณผ๋งํ ๊ธฐ๋ฅ์ ํฌ๊ฒ ์๋ ๊ฒ ๊ฐ๋ค. ์์ค๊ฐ ๊ธธ์ด์ง๊ป ๋๋นํด์ ์ผ๋ถ๋ฅผ ํจ์ํ ํ์ฌ ๋ฐ๋ก ๋นผ๋์๋ถ๋ถ๋ง ์ ์ธํ๊ณ ๋ง์ด๋ค.
#include <stdio.h>
int time_[100],home_sc=0,visitor_sc=0,win_t_home=0,win_t_vis=0,win_status=0,n;
// ๋์ ์ ์ฅ๋ณ์, 1๋ฒํ ์ค์ฝ์ด, 2๋ฒํ ์ค์ฝ์ด, 1๋ฒํ์ด ์ด๊ธฐ๊ณ ์๋ ์๊ฐ(๋จ์ : ์ด), 2๋ฒํ์ด ์ด๊ธฐ๊ณ ์๋ ์๊ฐ(๋จ์ : ์ด), ํ์ฌ ์ด๊ธฐ๊ณ ์๋ ํ ๋ฒํธ,๋์ ์ํฉ ์ด ๊ฐฏ์ -> ๋ชจ๋ ์ ์ญ๋ณ์(Global Variable)๋ก ์ ์ธํจ.
void compare(int i) //์ด๊ธฐ๊ณ ์๋ ์๊ฐ์ ๊ตฌ๋ณํ์ฌ ์๊ฐ์ ๋ํด์ฃผ๋ ํจ์
{
if(i!=0) //์ฒซ๋ฒ์งธ ์ผ์ด์ค๋ง ์
๋ ฅ๋ ์ํ์์๋ ํด๋นํจ์๋ฅผ ์คํํ์ง ์๋๋ค.
{
switch(win_status)
{
case 1: //์ด๋ฒ ๋์ ์ ๊น์ง 1๋ฒํ์ด ์ด๊ธฐ๊ณ ์์๋ค๋ฉด?
win_t_home += time_[i]-time_[i-1]; //์ด๊ธฐ๊ณ ์๋ ์๊ฐ ๊ณ์ฐํ ์ถ๊ฐ (1๋ฒํ)
break;
case 2: //์๋ 2๋ฒํ์ด ์ด๊ธฐ๊ณ ์์๋ค๋ฉด?
win_t_vis += time_[i]-time_[i-1]; //์ด๊ธฐ๊ณ ์๋ ์๊ฐ ๊ณ์ฐํ ์ถ๊ฐ (2๋ฒํ)
break;
}
}
}
int main() {
scanf("%d",&n); //์ด ๋์ ํ์๋ฅผ ์
๋ ฅ๋ฐ์.
for(int i=0; i<n; i++) //์ด ๋์ ํ์๋งํผ ์ผ์ด์ค ์
๋ ฅ ๋ฐ๊ธฐ.
{
int team,tmp1,tmp2; //๋์ ํ ํ๋ฒํธ, ๋์ ํ ์๊ฐ(๋ถ,์ด)
scanf("%d %d:%d",&team,&tmp1,&tmp2); //๋์ ํ ํ๊ณผ ๋์ ์๊ฐ์ ์
๋ ฅ๋ฐ์.
switch(team) //๋ฐฉ๊ธ ์
๋ ฅ๋ ์ผ์ด์ค๊ฐ ์ด๋คํ์ ๋์ ์ธ์ง ๊ตฌ๋ณ
{
case 1: //1๋ฒ ํ
time_[i] = tmp1*60 + tmp2; //๋ถ์ ์ด๋ก ๋ฐ๊พธ์ด ์ ์ฅ
compare(i); //์ด๊ธฐ๊ณ ์๋ ์๊ฐ์ ๊ตฌ๋ณํ์ฌ ์ถ๊ฐํ๊ธฐ
home_sc++; //์ ์ 1์ ๋์
break;
case 2: //2๋ฒ ํ
time_[i] = tmp1*60 + tmp2; //๋ถ์ ์ด๋ก ๋ฐ๊พธ์ด ์ ์ฅ
compare(i); //์ด๊ธฐ๊ณ ์๋ ์๊ฐ์ ๊ตฌ๋ณํ์ฌ ์ถ๊ฐํ๊ธฐ
visitor_sc++; //์ ์ 1์ ๋์
break;
}
if(home_sc>visitor_sc) //ํ์ฌ ์ด๊ธฐ๊ณ ์๋ ํ ์ ์ฅ
win_status=1; //1๋ฒํ
else if(home_sc<visitor_sc)
win_status=2; //2๋ฒํ
else
win_status=0; //๋์
if(i==n-1) // ์ด๋ฒํ์์ ๋ง์ง๋ง ๋์ ์ ์ผ์ด์ค๊ฐ ์ฃผ์ด์ง ๊ฒฝ์ฐ ์ด ๊ฒฝ๊ธฐ์๊ฐ์์ ๋์ ์๊ฐ์ ๋บด ๋ง์ง๋ง์ผ๋ก ์ด๊ธฐ๊ณ ์๋ ์๊ฐ์ ์ถ๊ฐํด ์ฃผ๊ธฐ
{
if(home_sc>visitor_sc) //์ต์ข
์ ์ธ ์ ์๋ก 1๋ฒํ์ด ์ด๊ธฐ๋ ๊ฒฝ์ฐ
win_t_home += 48*60-time_[i];
else if(visitor_sc>home_sc) // ์๋ 2๋ฒํ์ด ์ด๊ธฐ๋ ๊ฒฝ์ฐ
win_t_vis += 48*60-time_[i];
}
}
printf("%02d:%02d\n%02d:%02d",win_t_home/60,win_t_home%60,win_t_vis/60,win_t_vis%60);
//๊ฒฐ๊ณผ ์ถ๋ ฅ
return 0;
}
์ด๊ฒ์ด ์ด๋ฒ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์์ฑํ ์์ค์ ์๋ณธ์ด๋ค.
์ค๋ฒ๋ฌธ์ ์น๊ณ ์์ค๊ฐ ๊ธด๊ฒ๋บด๊ณ ๋ ํฌ๊ฒ ํน๋ณํจ์ ๋๋์๋ ์์ ๊ฒ์ด๋ค.ใ ก_ใ ก;;
#include <stdio.h>
int time_[100],home_sc=0,visitor_sc=0,win_t_home=0,win_t_vis=0,win_status=0,n;
// ๋์ ์ ์ฅ๋ณ์, 1๋ฒํ ์ค์ฝ์ด, 2๋ฒํ ์ค์ฝ์ด, 1๋ฒํ์ด ์ด๊ธฐ๊ณ ์๋ ์๊ฐ(๋จ์ : ์ด), 2๋ฒํ์ด ์ด๊ธฐ๊ณ ์๋ ์๊ฐ(๋จ์ : ์ด), ํ์ฌ ์ด๊ธฐ๊ณ ์๋ ํ ๋ฒํธ,๋์ ์ํฉ ์ด ๊ฐฏ์ -> ๋ชจ๋ ์ ์ญ๋ณ์(Global Variable)๋ก ์ ์ธํจ.
void compare(int i) //์ด๊ธฐ๊ณ ์๋ ์๊ฐ์ ๊ตฌ๋ณํ์ฌ ์๊ฐ์ ๋ํด์ฃผ๋ ํจ์
{
if(i!=0) //์ฒซ๋ฒ์งธ ์ผ์ด์ค๋ง ์
๋ ฅ๋ ์ํ์์๋ ํด๋นํจ์๋ฅผ ์คํํ์ง ์๋๋ค.
{
switch(win_status)
{
case 1: //์ด๋ฒ ๋์ ์ ๊น์ง 1๋ฒํ์ด ์ด๊ธฐ๊ณ ์์๋ค๋ฉด?
win_t_home += time_[i]-time_[i-1]; //์ด๊ธฐ๊ณ ์๋ ์๊ฐ ๊ณ์ฐํ ์ถ๊ฐ (1๋ฒํ)
break;
case 2: //์๋ 2๋ฒํ์ด ์ด๊ธฐ๊ณ ์์๋ค๋ฉด?
win_t_vis += time_[i]-time_[i-1]; //์ด๊ธฐ๊ณ ์๋ ์๊ฐ ๊ณ์ฐํ ์ถ๊ฐ (2๋ฒํ)
break;
}
}
}
int main() {
...
}
์ด๊ฒ์ด compare ํจ์์ด๋ค. ์๋๋ ๋ฐ๋ก ์ด๋ ๊ฒ ๋ณ๋์ ํจ์๋ฅผ ๋ง๋ค์ด์ ์์ค๋ฅผ ์งค ๊ณํ์ ์์๋ค.
int main()
{
...
switch(team) //๋ฐฉ๊ธ ์
๋ ฅ๋ ์ผ์ด์ค๊ฐ ์ด๋คํ์ ๋์ ์ธ์ง ๊ตฌ๋ณ
{
case 1: //1๋ฒ ํ
time_[i] = tmp1*60 + tmp2; //๋ถ์ ์ด๋ก ๋ฐ๊พธ์ด ์ ์ฅ
compare(i); //์ด๊ธฐ๊ณ ์๋ ์๊ฐ์ ๊ตฌ๋ณํ์ฌ ์ถ๊ฐํ๊ธฐ
home_sc++; //์ ์ 1์ ๋์
break;
case 2: //2๋ฒ ํ
time_[i] = tmp1*60 + tmp2; //๋ถ์ ์ด๋ก ๋ฐ๊พธ์ด ์ ์ฅ
compare(i); //์ด๊ธฐ๊ณ ์๋ ์๊ฐ์ ๊ตฌ๋ณํ์ฌ ์ถ๊ฐํ๊ธฐ
visitor_sc++; //์ ์ 1์ ๋์
break;
}
...
}
๊ทธ๋ฌ๋ compareํจ์๊ฐ ์ฌ์ฉ๋ ๊ณณ์ ํ์ธํ๋ฉด ๋ด๊ฐ ์ ์ด๋ ๊ฒ ๋ง๋ค์๋์ง ์ง์ํ ์ ์๋ค. home_sc์ visitor_sc๋ 1๋ฒํ๊ณผ 2๋ฒํ์ ์ ์๋ฅผ ์ ์ฅํ๋ ๋ณ์์ธ๋ฐ ์ด ์ ์๋ฅผ ์นด์ดํธ ํ๊ธฐ์ ์ compareํจ์ ์์ ์๋ ์์ ์ด ์ด๋ฃจ์ด์ ธ์ผํ๋ค. ๊ทธ๋ฌ๊ธฐ์๋ ํจ์๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋๊ฐ์ ์์ค๋ฅผ ๋ ์ผ์ด์ค์ ๊ฒฝ์ฐ์ ๋ชจ๋ ์ง์ด๋ฃ์ด์ผ ํ๊ธฐ๋๋ฌธ์ ๋งค์ฐ ๋นํจ์จ์ ์ด๊ณ , ๊ทธ์ธ์๋ ํจ์๋ฅผ ์ด์ฉํ์ง ์๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด ์์๊ฑฐ๋ผ๊ณ ์๊ฐ๋์ด์ง์ง๋ง ๋ด๊ฐ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๊ทธ๋๋ง ํจ์จ์ ์ด๋ฉด์ ์๊ณ ๊ฐ ๋๋๋ ๋ฐฉ๋ฒ์ ํจ์๋ฅผ ๋ณ๋๋ก ๋ง๋ค์ด ๋ฐ๋ณต์ ์ธ ์์ ์ ๋ณ๋๋ก ๋นผ๋ด์ด ๋ง๋๋ ๊ฒ์ด์๋ค.
๊ทธ์ธ์ ๊ฐ ์์ค์ ๋ํ ์ค๋ช ์ ์ ํ ์์ค์ ํ๋ํ๋ ์ฃผ์์ ๋ฌ์ ๋์์ผ๋ฏ๋ก ๊ด์ฌ์ด ์์ผ์ ๋ถ๋ค์ ํ๋ฒ ์ฝ์ด๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ๋ค.
๊ฒฐ๊ณผ ๋งํฌ : http://boj.kr/13564ed262734bf98d53f41795a6f043