ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€(BOJ)] 1157๋ฒˆ ๋‹จ์–ด ๊ณต๋ถ€, C์–ธ์–ด ํ’€์ด
    PS(Problem Solving)/C 2020. 7. 4. 00:15
    ๋ฐ˜์‘ํ˜•

    <๋‹จ์–ด ๊ณต๋ถ€>, 1157๋ฒˆ

    ๋ฌธ์ œ

    ์•ŒํŒŒ๋ฒณ ๋Œ€์†Œ๋ฌธ์ž๋กœ ๋œ ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ์ด ๋‹จ์–ด์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ ์•ŒํŒŒ๋ฒณ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋‹จ, ๋Œ€๋ฌธ์ž์™€ ์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๋Š”๋‹ค.

     

    ์ž…๋ ฅ

    ์ฒซ์งธ ์ค„์— ์•ŒํŒŒ๋ฒณ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” 1,000,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

     

    ์ถœ๋ ฅ

    ์ฒซ์งธ ์ค„์— ์ด ๋‹จ์–ด์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ ์•ŒํŒŒ๋ฒณ์„ ๋Œ€๋ฌธ์ž๋กœ ์ถœ๋ ฅํ•œ๋‹ค. ๋‹จ, ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋œ ์•ŒํŒŒ๋ฒณ์ด ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ?๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

     

    ์˜ˆ์ œ ์ž…๋ ฅ 1

    Mississipi

    ์˜ˆ์ œ ์ถœ๋ ฅ 1

    ?

     

    ์˜ˆ์ œ ์ž…๋ ฅ 2

    zZa

    ์˜ˆ์ œ ์ถœ๋ ฅ 2

    Z

     

    ์˜ˆ์ œ ์ž…๋ ฅ 3

    z

    ์˜ˆ์ œ ์ถœ๋ ฅ 3

    Z

     

    ์˜ˆ์ œ ์ž…๋ ฅ 4

    baaa

    ์˜ˆ์ œ ์ถœ๋ ฅ 4

    A

     

    ํ’€์ด

    ์ด ๋ฌธ์ œ๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž์™€ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๋‹จ์–ด๋ฅผ ์ž…๋ ฅํ•ด์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋‚˜์˜จ ์•ŒํŒŒ๋ฒณ์ด ์ •ํ•ด์ ธ ์žˆ๋‹ค๋ฉด ๊ทธ ์•ŒํŒŒ๋ฒณ์„ ๋Œ€๋ฌธ์ž๋กœ ์ถœ๋ ฅํ•˜๊ณ , ๊ฐ€์žฅ ๋งŽ์ด ๋‚˜์˜จ ์•ŒํŒŒ๋ฒณ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋ฉด ?๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

    ๋‚˜๋Š” ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์€ ๋ฐฐ์—ดa์— ์ €์žฅํ–ˆ๊ณ , asize ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ while๋ฌธ์„ ์ด์šฉํ•ด NULL๊ฐ’์„ ์ฐพ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋งŒํผ for๋ฌธ์„ ๋Œ๋ฆฐ ํ›„ ์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ž…๋ ฅ๋œ ๋ฌธ์ž์—ด์—์„œ ์†Œ๋ฌธ์ž์™€ ๋Œ€๋ฌธ์ž์˜ ์•ŒํŒŒ๋ฒณ์„ ์•„์Šคํ‚ค ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด count ๋ฐฐ์—ด์— ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•ด์„œ ์ž…๋ ฅ๋œ ์•ŒํŒŒ๋ฒณ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ ์ดํ›„ count ๋ฐฐ์—ด์— ์ตœ๋Œ€๋กœ ์ €์žฅ๋œ ๊ฐ’์„ ๊ตฌํ•˜๊ณ , ๊ทธ ์ตœ๋Œ€ ์ง€์ ์— A์˜ ์•„์Šคํ‚ค ์ฝ”๋“œ์ธ 65๋ฅผ ๋”ํ•ด์คŒ์œผ๋กœ ๋‹ต์„ ์ถœ๋ ฅํ–ˆ๋‹ค. ๋ฌธ์ œ์˜ ์ถ”๊ฐ€์กฐ๊ฑด์œผ๋กœ ์ž…๋ ฅ๋œ ์•ŒํŒŒ๋ฒณ์˜ ๊ฐœ์ˆ˜๊ฐ€ aabb์™€ ๊ฐ™์ด a๊ฐ€ 2๋ฒˆ, b๊ฐ€ 2๋ฒˆ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ์—๋Š” ?๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•ด์„œ count ๋ฐฐ์—ด์„ for๋ฌธ์„ ๋Œ๋ ค ์ตœ๋Œ“๊ฐ’๊ณผ count ๋ฐฐ์—ด์•ˆ์— ๊ฐ™์€ ๊ฒƒ์ด ์žˆ๋‹ค๋ฉด check ๋ณ€์ˆ˜๋ฅผ ๋”ํ•ด์ฃผ๋„๋ก ํ•ด์„œ ์ตœ์ข…์ ์œผ๋กœ if๋ฌธ์„ ์ด์šฉํ•ด ๋‹ต์„ ์ถœ๋ ฅํ–ˆ๋‹ค.

     

    ์†Œ์Šค์ฝ”๋“œ

    #include <stdio.h> // ๋ฌธ์ž์—ด, <๋‹จ์–ด ๊ณต๋ถ€>
    
    int main(void)
    {
    	char a[1000000];
    	int asize = 0;
    	int count[26] = { 0 };
    	int check = 0, max = 0, idx = 0;
    
    	scanf("%s", a);
    
    	while (a[asize] != '\0')
    		asize++;
    
    	for (int i = 0; i < asize; i++)
    		for (int j = 'a'; j <= 'z'; j++)
    			if (a[i] == j)
    				count[a[i] - 'a']++;
    	for (int i = 0; i < asize; i++)
    		for (int j = 'A'; j <= 'Z'; j++)
    			if (a[i] == j)
    				count[a[i] - 'A']++;
    
    	for (int i = 0; i < 26; i++)
    	{
    		if (max < count[i])
    		{
    			max = count[i];
    			idx = i;
    		}
    
    	}
    
    	for (int i = 0; i < 26; i++)
    	{
    		if (max == count[i])
    		{
    			check++;
    		}
    	}
    
    	if (check > 1)
    		printf("?");
    	else
    		printf("%c", idx + 'A');
    
    
    	return 0;
    }

     

    ๋ฐ˜์‘ํ˜•
Designed by Tistory.