[Go] 11652번 카드
- Coding Test/백준
- 2023. 7. 12.
문제 링크
https://www.acmicpc.net/problem/11652
정답 코드
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
n, _ := strconv.Atoi(scanner.Text())
memdb := make(map[int]int)
var maxCount int
var result int
for i := 0; i < n; i++ {
scanner.Scan()
num, _ := strconv.Atoi(scanner.Text())
memdb[num]++
if memdb[num] > maxCount || (memdb[num] == maxCount && num < result) {
maxCount = memdb[num]
result = num
}
}
fmt.Println(result)
}
📕참고
1. map 사용
- make(map[int]int) -> key : int, value : int 인 맵 선언
- ex) map[int]string -> key : int, value : string 인 맵 선언
- 키-값 쌍 초기상태 존재 X
- map 변수[map key] = map value -> map key 가 존재하지 않으면 map value 타입의 제로값을 반환함.
- 위의 경우 value type이 int 값이므로 0을 반환함. value type 이 string 이면 "" (빈값) 반환
2. 변수 선언 방법
- var 변수이름 타입
- 변수 타입을 명시적으로 지정
- 값 초기화 하지 않으면 해당 타입의 제로 값으로 초기화
- 변수이름 := 값
- 선언과 동시에 초기값을 할당
- 타입은 우변의 값으로 자동 결정 -> Go 언어의 타입 추론기능 활용
- 두 선언 방식의 차이
- := 연산자는 함수 내부에서만 사용 가능
- 함수 외부에서 변수 선언할 경우, var 키워드를 사용해야 함
'Coding Test > 백준' 카테고리의 다른 글
[Go] 1874번 스택 수열 (0) | 2023.07.12 |
---|