[Go] 11652번 카드

문제 링크

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

댓글

Designed by JB FACTORY