๋ฌธ์ œ

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