💻 문제
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
'BOJ > Go' 카테고리의 다른 글
[Go] BOJ / 25206번 / 너의 평점은 (0) | 2023.03.24 |
---|---|
[Go] BOJ / 4344번 / 평균은 넘겠지 (0) | 2023.03.24 |
[Go] BOJ / 10988번 / 팰린드롬인지 확인하기 (0) | 2023.03.23 |
[Go] BOJ / 10812번 / 바구니 순서 바꾸기 (0) | 2023.03.23 |
[Go] BOJ / 2444번 / 별 찍기 - 7 (0) | 2023.03.22 |