-
[Programmers] Lv1.์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ(kotlin)SW Test/Programmers 2022. 7. 23. 00:35๋ฐ์ํ
๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/92334?language=kotlin ์์
https://school.programmers.co.kr/learn/courses/30/lessons/92334?language=kotlin ํ์ด
- ํด๋น ๋ฌธ์ ๋ map, set ๋ฑ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ์กฐํฉํ๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
- ๋จผ์ , id_report_set์ id์ ํ๋์ set์ ๊ด๋ฆฌํ ์ ์๋ map์ ์์ฑํฉ๋๋ค.
- ์ดํ report์ ํ๋์ฉ ํ์ํ๋ฉด์ id_report_set์ ๊ฐ์ ์ธํ ํฉ๋๋ค. ์ค๋ณต๋ ์ฌ๋์ ์๋์ผ๋ก ์ ๊ฑฐ๊ฐ ๋ฉ๋๋ค.
- reported_count์๋ id ๋ง๋ค ์ ๊ณ ๋ฐ์ ํ์๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ํด๋น ๊ฐ์ id_report_set์ ํ์ํ์ฌ id๊ฐ ์ ๊ณ ํ ์ฌ๋๋ค์ ๋ด์ value ๊ฐ์ผ๋ก ํ๋์ฉ ํ์๋ฅผ ์ฆ๊ฐ์ํต๋๋ค.
- ๋ง์ง๋ง์ผ๋ก id_list๋ฅผ ํ์ํ๋ฉด์ id๊ฐ ์ ๊ณ ํ ์ฌ๋๋ค ์ค ๊ฒฐ๊ณผ ๋ฉ์ผ์ ๋ฐ์ ์ฌ๋๋ค์ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
fun solution(id_list: Array<String>, report: Array<String>, k: Int): IntArray { var answer = IntArray(id_list.size) val id_report_set = mutableMapOf<String, Set<String>>().apply { id_list.forEach { put(it, setOf<String>()) } } report.forEach { val str = it.split(" ") id_report_set.put(str[0], id_report_set.get(str[0])!! + setOf(str[1])) } val reported_count = mutableMapOf<String, Int>() for (elem in id_report_set) { val idset = elem.value idset.forEach { reported_count.put(it, (reported_count.get(it) ?: 0) + 1) } } id_list.forEachIndexed { index, elem -> val idset = id_report_set.get(id_list.get(index))!! answer[index] = idset.filter { reported_count.get(it)!! >= k }.size } return answer }
- ์์ฒ๋ผ ํ ์๋ ์์ง๋ง kotlin์ ๋ค์ํ ํจ์๋ค์ ์ ์๊ณ ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ฉ์๋ ์ฒด์ด๋๋ง ์ฌ์ฉํ์ฌ ํ ์ ์์ต๋๋ค!! ๐
- distinct, groupBy, flatten ๋ชจ๋ฅด๋ ๋ฉ์๋๋ค์ด ๋ง์๊ธฐ์ ์ ๊ธฐ๋กํด ๋ก์๋ค~~
fun solution2(id_list: Array<String>, report: Array<String>, k: Int): IntArray = report.distinct().map { it.split(" ") } .groupBy { it[1] } .map { it.value } .filter { it.size >= k } .flatten() .groupBy { it[0] } .run { id_list.map { get(it)?.size ?: 0 }.toIntArray() }
์ฐธ๊ณ
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ kotlin์ ํน์ฑ์ ๋ง๊ฒ ํจ์๋ฅผ ๋ง์ด ์ตํ์ ๐ฝ
- https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/group-by.html
groupBy - Kotlin Programming Language
kotlinlang.org
distinct - Kotlin Programming Language
kotlinlang.org
flatten - Kotlin Programming Language
kotlinlang.org
๋ฐ์ํ'SW Test > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] Lv2. ๋ฌธ์์ด ์์ถ(kotlin) (0) 2022.07.28 [Programmers] Lv2. N-Queen(kotlin) (0) 2022.07.26 [Programmers] Lv1.๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์(kotlin) (0) 2022.07.22 [Programmers] Lv1.์ ๊ท ์์ด๋ ์ถ์ฒ(kotlin) (0) 2022.07.18 [Programmers] Lv1. ์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด(kotlin) (0) 2022.07.17