체리의 하루
Published 2023. 3. 24. 09:54
[Go] BOJ / 1157번 / 단어 공부 BOJ/Go

💻 문제

 

1157번: 단어 공부

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

www.acmicpc.net

 

📜 풀이

<go />
package main import ( "bufio" "fmt" "os" "strings" ) func main() { var s string var max, double, e int var alphabet []int = make([]int, 26) r := bufio.NewReader(os.Stdin) w := bufio.NewWriter(os.Stdout) defer w.Flush() fmt.Fscanln(r, &s) s = strings.ToUpper(s) for i := range s { n := s[i] alphabet[n-65] += 1 } max = -1 for i := range alphabet { if alphabet[i] > max { max = alphabet[i] double = i e = 0 } else if alphabet[i] == max && alphabet[i] != 0 { e = 1 } } if e == 1 { fmt.Fprintln(w, "?") } else if e == 0 { fmt.Fprintln(w, string(double+65)) } }

 

✍ 설명

  • 동일한 max 이 주어졌을 때 e = 1, else 문을 주어 max 값이 하나인 경우max 출력을 하도록 유도
    • 이 경우 else 문을 썼을 때 50 퍼에서 오류가 발생
    • max 값 발생 시 e = 0 을 주고 else if문을 써 주니 해결됨
  • strings.ToUpper(string) : 모든 문자열을 대문자로 치환
728x90