[백준] 1157. 단어 공부

Algorithm|2021. 11. 16. 14:44
반응형

 

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

생각 후 코딩을 연습해야 하는데 자꾸 쉽다고 바로 코드 작성하는 이상한 버릇이 생겨버림,,

조심하도록 하자...

 

int main(void)
{
  string word; //입력 단어
  char ans; //정답 출력
  
  vector<int> map(26); //letter map
  int max = 0;
  int flag = 0; // 최대값이 2개 이상 곂치는 경우 flag를 올림
  cin >> word; 

  for(int i=0; i<word.size(); i++)
  {
    if('A'<=word[i]&&word[i]<='Z') //대문자 일 때
    {  
      map[word[i]-65]++; //해당글자에 해당하는 map 증가
      if(max < map[word[i]-65]) //max 값이 새로 갱신 될 경우 
      {
        max = map[word[i]-65]; //max 값 갱신
        flag = 0; // flag를 내리고
        ans = word[i]; // 해당 글자를 정답글자로
      }
      else if(max == map[word[i]-65]) 
        flag = 1; //최대값을 가지는 단어가 여러개인 경우
    }
    
    else  //소문자 일 때
    {  
      map[word[i]-97]++;
      if(max < map[word[i]-97])
      {
        max = map[word[i]-97];
        flag = 0;
        ans = word[i]-32;
      }
      else if(max == map[word[i]-97])
        flag = 1; 
    }
  }
  if(flag == 1) // 최대값이 중복인 경우
    cout << '?';
  else // 아닌 경우
    cout << ans;



 
  return 0;
}
반응형

'Algorithm' 카테고리의 다른 글

[Leetcode] 844. Backspace String Compare  (0) 2021.11.17
[Programmers] 소수만들기  (0) 2021.11.17
[백준] 1316. 그룹 단어 체커  (0) 2021.11.16
[백준] 1159. 농구경기  (0) 2021.11.15
[백준] 5822. 다이얼  (0) 2021.11.15

댓글()