[프로그래머스] 신고 결과 받기(Kotlin)

JJAE WON·2022년 6월 6일
0

👇🏻문제 확인하기
프로그래머스 - 신고 결과 받기

문제


제한사항

입출력

문제 풀이

2022년 카카오 블라인드 채용문제이고, 프로그래머스에서 레벨1로 분류한 문제이다. 카카오문제인 만큼 문제가 우선 엄청 길고 조건이 까다롭다!
구해야 할 값들을 정확하게 인지하고 입력받은 값들을 자유롭게 사용해야 하는 것이 key potin라고 생각한다.

  1. id_list가 key인 빈 map을 만들어준다.
  2. 중복을 제거하고 신고당한 사람 기준으로 mapping 된 자료형을 만든다.
  3. k보다 큰 문자열중에서 1번에서 만든 map에 신고한 사람에 숫자를 더해준다.
  4. 1번에서 만든 값의 value값을 반환해준다.
    fun solution(id_list: Array<String>, report: Array<String>, k: Int): IntArray {
        val temp = id_list.associateWith { 0 }.toMutableMap()

        report.groupBy { it.split(" ")[1]} // 신고당한 사람 기준으로 map 만들기
            .values
            .map { it.distinct() } // value의 중복 제거
            .filter { it.size>= k } // k보다 신고 많이 당한 사람 뽑아내기
            .map{ it.map { reporter -> reporter.split(" ")[0]} } // 신고한 사람 값 가져오기
            .flatten() // 다차원배열을 일차원배열로 변경
            .forEach {  reporter ->
            temp[reporter] = temp[reporter]!! + 1 // 신고한 사람의 숫자 1 증가시키기
        }

        return temp.values.toIntArray()
    }

한줄평

kotlin의 편리함을 느낀 문제!!!!
Koans로 컬렉션 정리해준게 유용하게 사용된다!!
아는만큼 보이는 kotlin...

profile
안드왕 찐천재가 되고싶다.

0개의 댓글