본문 바로가기
Coding Test/Go

[프로그래머스] 신고 결과 받기 Go Code

by giem 2022. 7. 18.
반응형

2022.07.16 - [Coding Test/Python] - [프로그래머스] 신고 결과 받기 Python code

 

[프로그래머스] 신고 결과 받기 Python code

문제 설명 예시 Input, Output 설명 code 구현은 아래와 같이 했다. answer의 배열은 id_list의 길이와 같기 때문에 0으로 모두 초기화해준다. 그 후 set으로 report의 중복을 제거한다. for문으로 report를..

gm-note.tistory.com

 

이번엔 프로그래머스 신고 결과 받기를 Go Code로 풀어보았다.

 

역시 풀이 방법은 같다.

 


Problem

 

 


Code

 

import (
    "strings"
)

func makeuniq(s []string) []string {
    m := make(map[string]struct{})
    res := make([]string, 0)
    
    for _, val := range s {
        if _, ok := m[val]; ok {
            continue
        } else {
            m[val] = struct{}{}
            res = append(res, val)
        }
    }
    return res
}

func solution(id_list []string, report []string, k int) []int {
    report_cnt := make(map[string]int)
    id_map := make(map[string]int)
    report = makeuniq(report)
    answer := make([]int, len(id_list))
    
    for i, name := range id_list {
        report_cnt[name] = 0
        id_map[name] = i
    }
    
    for _, v := range report {
        c := strings.Split(v, " ")
        report_cnt[c[1]] += 1
    }
    for _, v := range report {
        c := strings.Split(v, " ")
        if report_cnt[c[1]] >= k {
            answer[id_map[c[0]]] += 1
        }
    }

    return answer
}

set 함수가 없어서 배열을 unique하게 만드는 함수를 만들었다.

또 string타입 array의 index함수를 찾을 수가 없어서 map을 임의로 만들어 index를 찾을 수 있게 구현했다.

 

성능은 C++와 비슷하게 나왔다.

반응형

댓글