nul-problog

[c] 백준 1157번 단어공부 - 계속 틀릴 경우, 시간 초과 하는 경우에는 확인 하세요! 본문

백준 문제

[c] 백준 1157번 단어공부 - 계속 틀릴 경우, 시간 초과 하는 경우에는 확인 하세요!

enjoy_nul 2020. 4. 5. 00:18

문제

https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

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

www.acmicpc.net

 쉽게 생각 했다가 생각보다 올래걸린,,맘 다친 문제 .....ㅠ

 

저처럼 시간초과, 틀렸습니다. 계손 나오면 확인하세요!

- 알파벳의 길이가 최대 1,000,000이기 때문에 문자열로 입력받을시의 배열의 길이는 100만 1 이상이어야 함!! 널 문자를 저장할 공간이 필요학 때문이죠.  

 

- 글자의 수를 세는 변수는 int 여야 하는건 당연히 아시죠? 이 문제 질의 응답 보는데 많은 분들이 char로 개수를 세어서 틀리셧습니다 ㅠoㅠ

 

- for문 의 조건에  i< strlen(배열) 쓰면 안됩니다!!.  ->시간 초과의 원인..  문자열의 시작부터 한글자 한글자씩 보면서 널 문자가 나타날때까지 찾기 때문입니다 ,,,,, 길이를 미리 구하거나, 현재문자가 널 문자인지 직접 체크하는 방법 쓰기! 

 

- 최댓값을 찾으면서 max에 갱신할때 현재까지의 같은수가 또 나왔다고 곧바로 ?를 출력하거나! 또는 물음표 출력을 체크하는 변수에 값을 저장하면 안됩니다!! (계속 틀렸던 이유 ! ㅜㅜ 이런 경우는 반례를 : AABBCCC 했을때 확인이 가능합니다! 정답은 C인데, 물음표 ?가 나온경우에는 , 전체에서 가장 많이 나온 글자를 끝까지 구한후에! 같은 갯수가 있는지 다시 체크해야 합니다! )

 

-정답은 대문자! 까지 확인하기

 

 

Comments