์ƒˆ์†Œ์‹

์•Œ๊ณ ๋ฆฌ์ฆ˜/BaekJoon

BOJ 1157๋ฒˆ: ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜

  • -
728x90

๋ฌธ์ œ

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

 

์˜ˆ์ œ ์ž…์ถœ๋ ฅ

์ž…๋ ฅ

Mississipi

์ถœ๋ ฅ

?

 

์ฝ”๋“œ

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <iostream>
using namespace std;
 
int main() {
   char word[1000001]={" ",};
   char mostAlpha[26]={" ",};   //์•ŒํŒŒ๋ฒณ ๊ฐฏ์ˆ˜๊ฐ€ 26๊ฐœ์ด๋ฏ€๋กœ
   int repetNum[26]={0,};      //๋Œ€๋ฌธ์ž ์†Œ๋ฌธ์ž ํ•ฉํ•˜๋ฉด 52
   int idx=0,alphaCount=0;
   bool isIncrease=false;
   scanf("%s",word);
   while(word[idx]!='\0'){
           int idxSame=0;
           if(word[idx]>=97) word[idx]-=32;        //์†Œ๋ฌธ์ž์ผ ๊ฒฝ์šฐ ์•„์Šคํ‚ค์ฝ”๋“œ 32๋ฅผ ๋นผ์ฃผ์–ด ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
        if(alphaCount>=1){
             for(int i=0;i<alphaCount;i++){
                //๊ฐ™์€ ๊ฒƒ ์žˆ๋Š”์ง€ ์ฒดํฌ ๋ฐ ๊ฐ™์€ ์ž๋ฆฌ์˜ ๋ฐฐ์—ด ๋ฒˆํ˜ธ ์ €์žฅ
                if(word[idx]==mostAlpha[i]){
                  isIncrease=false;
                  idxSame=i;
                  break;
                }
                else{
                   isIncrease=true;
                }
             }
             if(isIncrease){        //for๋ฌธ์ด ๋๋‚˜๊ณ  alphaCount๋ฅผ ๋”ํ•ด์ฃผ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ
                mostAlpha[alphaCount]=word[idx];
                repetNum[alphaCount]=1;
                 alphaCount++;        //๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋” ๋งŽ์€ for๋ฌธ์„ ๋ฐœ์ƒ์‹œํ‚ด
             }
             else
             {
                  repetNum[idxSame]++;    //์•„๋‹ˆ๋ฉด์€ ๊ฐ™์€๊ฒƒ์— ++ํ•ด์คŒ
             }
        }
        else
        {
             mostAlpha[0]=word[idx];
             repetNum[0]=1;
             alphaCount++;
        }
        idx++;
   }
   //์ œ์ผ ์ˆซ์ž๊ฐ€ ํฐ ๊ฒƒ์„ ๋ฝ‘์Œ
   int mostNum=0,mostNumIdx=0;
   bool isDupli=false;
   for(int i=0;i<alphaCount;i++){
      if(mostNum<repetNum[i]){ 
         mostNum=repetNum[i];
         isDupli=false;            //์ตœ๋Œ“๊ฐ’์ด ๋ฐ”๋€”๊ฒฝ์šฐ false
         mostNumIdx=i;
      }
      else if(mostNum==repetNum[i]&&repetNum[i]>1){
         isDupli=true;            //๊ฐ™์€ ์ตœ๋Œ€๊ฐ’์ด ์žˆ๋‹ค๋ฉด true, ํ•˜์ง€๋งŒ 1์ดˆ๊ณผ์—ฌ์•ผํ•จ
      }
   }
   
   if(isDupli){
      printf("?");
   }
   else{
          printf("%c",mostAlpha[mostNumIdx]);
   }
   return 0;
}
cs

*๊ฐ„๋‹จํ•œ ํ•ด์„ค*

์•ŒํŒŒ๋ฒณ๊ฐฏ์ˆ˜๋งŒํผ์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ๋ฌธ์ž์—ด์„ ์ฒดํฌํ•˜์—ฌ ๊ฐฏ์ˆ˜๋งŒํผ ์ €์žฅํ•œ ํ›„ 45~56๋ฒˆ ๋ผ์ธ์—์„œ ์ œ์ผ ํฐ ์•ŒํŒŒ๋ฒณ์„ ๋ฝ‘๋Š”๋‹ค

๋‚˜๋จธ์ง€๋Š” ์ฃผ์„์„ ํ†ตํ•ด ์„ค๋ช…ํ•ด๋†“์•˜๋‹ค

์ด ์ฝ”๋“œ๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€ ์•Š์„๊นŒ ์‹ถ๊ธดํ•˜๋‹ค

 

*๋ฉ”๋ชจ๋ฆฌ*

2840KB

*์‹œ๊ฐ„*

36ms

*์–ธ์–ด*

C++14

*์ฝ”๋“œ๊ธธ์ด*

1878B

*์ด ๋ฐฉ๋ฒ•๋งŒ์ด ๋งž๋Š” ์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ›จ์”ฌ ์ข‹๊ณ  ๋น ๋ฅธ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„๋“ค ํ™”์ดํŒ…! '0'/*

 

 

 

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.