-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโll occasionally send you account related emails.
Already on GitHub? Sign in to your account
11-alstjr7437 #39
11-alstjr7437 #39
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
์ ๋ ํฉ๊ณ๋ ์๋ก๊ณก ๊ด๋ฆฌ๋ฅผ ๋ฐ๋ก ํด์ฃผ์๋๋ฐ ํ๋๋ก ํด์ 2๊ฐ์ฉ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ๊ตฐ์.. ํ
๋๋ถ์ด sortWith ์ ๋ ๊ณต๋ถํ ์ ์์์ต๋๋ค.
fun solution(genres: Array<String>, plays: IntArray): IntArray {
val genresSum = linkedMapOf<String, Int>()
val genreMusics = linkedMapOf<String, MutableList<Pair<Int, Int>>>()
val answer = mutableListOf<Int>()
for (i in genres.indices) {
val genreName = genres[i]
// ์ฒ์ ๋ฃ๋๊ฑฐ๋ฉด ์ด๊ธฐํ
if (genreMusics[genreName] == null) {
genreMusics[genreName] = mutableListOf()
genresSum[genreName] = 0
}
// ํฉ๊ณ ์ฌ๋ฆฌ๊ธฐ + ์์
์ถ๊ฐํ๊ธฐ
genresSum[genres[i]] = genresSum[genres[i]]!! + plays[i]
genreMusics[genres[i]]!!.addMusic(i to plays[i])
}
// ํฉ๊ณ๋ก ์ ๋ ฌ
val sortedGenres = genresSum.toList().sortedByDescending { it.second }.toMap()
// ์ ๋ ฌ๋ ์ฅ๋ฅด ์์๋ก index ๊ฐ ๊ฐ์ ธ์์ ๋ํ๊ธฐ
sortedGenres.keys.forEach {
answer += genreMusics[it]!!.map { music -> music.first }
}
return answer.toIntArray()
}
// ์์
์ถ๊ฐํ ๋
// play ์ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ, index ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
// 3 ์ด์์ด๋ฉด ๋ค์ ์๋ฅด๊ธฐ
private fun MutableList<Pair<Int, Int>>.addMusic(music: Pair<Int, Int>) {
add(music)
sortWith(compareBy({ -it.second }, { it.first }))
if (size >= 3) {
removeLast()
}
}
๋ฌธ์ ์ค๋ช ์์ ์ด๋ชจํฐ์ฝ์ด ๋ฉ์ดํ ์ฃผ๋ฌธ์ ๊ฐ์์ ์ข ํ ์นซํ์ต๋๋ค. # 1. ๋์
๋๋ฆฌ ๋ง๋ค๊ธฐ
for i in range(len(genres)):
if genres[i] not in dict :
dict[genres[i]] = [[plays[i], i]]
else :
dict[genres[i]].append([plays[i],i]) ์ ๋ ๋์
๋๋ฆฌ์ ์ถ๊ฐํ๋ ์ด ๋ถ๋ถ์ set ์๋ฃํ์ผ๋ก ์ฅ๋ฅด๋ฅผ ํ๋์ฉ๋ง ๋จ๊ธฐ๊ฒ ํด์ ๊ตฌํํ์ต๋๋ค. def solution(genres, plays):
answer = []
dict_for_album = dict()
# ์ฅ๋ฅด๋ฅผ set ์๋ฃํ์ผ๋ก ํ๋์ฉ๋ง ๋จ๊ฒจ๋๊ธฐ
set_genres = set(genres)
# ๋์
๋๋ฆฌ[์ฅ๋ฅด]๋ก ์ด๊ธฐํ
for genre in set_genres:
dict_for_album[genre] = [0,[]]
# ์ฅ๋ฅด, ๋
ธ๋ ๋ณ ์ฌ์ ์ ๊ธฐ๋ก
for i in range(len(genres)):
dict_for_album[genres[i]][0] += plays[i]
dict_for_album[genres[i]][1].append((plays[i], i))
# ์ฅ๋ฅด ๋ณ ์ฌ์ ์, ์ฅ๋ฅด ๋ด ๋
ธ๋ ๋ณ ์ฌ์ ์๋ก ์ ๋ ฌ
# ์ฅ๋ฅด ๋ณ๋ก ๋ ๊ฐ์ฉ ์ ๋ต์ ์ถ๊ฐ(ํ๋์ ๋
ธ๋๋๋ผ๋ ์ฌ๋ผ์ด์ฑ์ผ๋ก ์ฒ๋ฆฌํด์ ์ ๋จ)
for _ , lists in sorted(dict_for_album.items(), key=lambda x : -x[1][0]):
for index in sorted(lists[1], key=lambda x : -x[0])[:2]:
answer.append(index[1])
return answer |
์ ์ ๊ฒฝ์ฐ ์ฅ๋ฅด๋ฅผ set์ ์ง์ด๋ฃ์ด์ ์ข ๋ฅ ๋ณ๋ก ํ๋์ฉ๋ง ํํฐ๋งํ ํ, ๊ทธ๊ฑฐ๋ฅผ ํค ๊ฐ์ผ๋ก ํ๋ ๋์ ๋๋ฆฌ ์์ฑํ์ต๋๋ค. playlist_by_genre = {genre : [] for genre in set(genres)}
for i, (genre, play) in enumerate(zip(genres, plays)):
playlist_by_genre[genre].append((play, i)) ๋ค๋ฅธ ๋ถ ์ฝ๋ ๋ณด๋๊น ๊ทน๋๋ก ์์ถ์ํจ ์ฝ๋๊ฐ ์๊ธธ๋ ์ ๋ ๋ค๊ณ ์์ต๋๋ค ใ ใ sorted_genre = sorted(playlist_by_genre.keys(), key=lambda x: sum(map(lambda y: y[0], playlist_by_genre[x])), reverse=True) ์ฅ๋ฅด ๋ชฉ๋ก(x)์ ์ ๋ ฌํ๋๋ฐ, ๊ฐ ์ฅ๋ฅด ๋ชฉ๋ก ๋ณ ๊ณก ์ ๋ณด(์ฌ์ ์๊ฐ, ์ธ๋ฑ์ค) ๋ฆฌ์คํธ(playlist_by_genre[x])์์ play ์๊ฐ์ ํฉ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌํฉ๋๋ค. for genre in sorted_genre:
temp = [index for play, index in sorted(playlist_by_genre[genre], key=lambda x: (-x[0], x[1]))]
answer += temp[:2] ๋ง์ง๋ง์ผ๋ก ์์์ ์ ๋ ฌํ ์ฅ๋ฅด ์์๋๋ก, ์ฅ๋ฅด ๋ณ ๊ณก ์ ๋ณด(์ฌ์์๊ฐ, ์ธ๋ฑ์ค)๋ฅผ ์ํํด์ 1. ์ฌ์์๊ฐ ๋ง๊ณ (-x[0]) 2. ๋ฎ์ ๊ณ ์ ๋ฒํธ ์ฐ์ ์ผ๋ก(x[1]) ์ 2๊ฐ๋ง ์ถ์ถํด์ answer์ ์ถ๊ฐํฉ๋๋ค. ์ ์ฒด ์ฝ๋ def solution(genres, plays):
playlist_by_genre = {genre : [] for genre in set(genres)}
for i, (genre, play) in enumerate(zip(genres, plays)):
playlist_by_genre[genre].append((play, i))
sorted_genre = sorted(playlist_by_genre.keys(), key=lambda x: sum(map(lambda y: y[0], playlist_by_genre[x])), reverse=True)
answer = []
for genre in sorted_genre:
temp = [index for play, index in sorted(playlist_by_genre[genre], key=lambda x: (-x[0], x[1]))]
answer += temp[:2]
return answer |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
def solution(genres, plays):
answer = []
classified_plays = {genre : [] for genre in genres}
genre_play_count = { genre : 0 for genre in genres}
plays = list(enumerate(plays))
for idx in range(len(genres)):
genre_play_count[genres[idx]] = genre_play_count[genres[idx]] + plays[idx][1]
classified_plays[genres[idx]].append(plays[idx])
for classified_genre in classified_plays.keys() :
classified_plays[classified_genre].sort(key=lambda x : -x[1])
sorted_genre_play_count = sorted(genre_play_count, key=lambda x : -genre_play_count[x])
limit = 2
for sorted_genre in sorted_genre_play_count :
answer.extend([idNum[0] for idNum in classified_plays[sorted_genre][:limit]])
return answer
์์ง python ์ ํจ์๋ค์ ๋ณด๊ณ ํ๊ธฐ๋ ํ์ง๋ง ๊ทธ๋๋ ํ์ด๋ฒ์ ํผ์์ ์๊ฐํด ๋์ด์! ์์ธ ๐ฅณ
๐ ๋ฌธ์ ๋งํฌ
๋ฒ ์คํธ ์จ๋ฒ
โ๏ธ ์์๋ ์๊ฐ
40๋ถ
๐ ๋ฌธ์ ์ค๋ช
๊ฐ ๋ ธ๋๋ณ ์ฅ๋ฅด์ ์ฌ์๋ ํ์๊ฐ ์ ์ฅ๋์ด ์์ต๋๋ค.
์ ํ์ ๊ฐ์ด ๊ฐ ์ฅ๋ฅด์ ์ฌ์ ํ์๊ฐ ์ฃผ์ด์ง๋ฉด
classic : 500 + 150 + 800 = 1450
pop : 600 + 2500 = 3100
์ผ๋ก pop์ฅ๋ฅด๊ฐ ๋ ๋ง์ด ์ฌ์๋์์ต๋๋ค.
๊ทธ๋ ๊ฒ ๋์ pop์ฅ๋ฅด์ ์ฌ์์์ผ๋ก 2๊ณก์ ๋จผ์ [4,1]
๊ทธ๋ฆฌ๊ณ classic์ฅ๋ฅด์ ์ฌ์์์ผ๋ก 2๊ณก์ ๋ฝ์์ [4,1,3,0]์ด ๋์ค๊ฒ ๋ฉ๋๋ค.
โจ ์๋ ์ฝ๋
๊ทธ๋ ๊ฒ ์ ๋ฌธ์ ๋ฅผ ์ด์ฉํด์ ์๋์ฝ๋๋ฅผ ๋จผ์ ์ง๋ฉด
๊ฐ ์ฅ๋ฅด์ ์ฌ์ํ์๋ฅผ ๊ฐ์ ธ์ ๋์ ๋๋ฆฌ๋ก ๋ง๋ ๋ค
ํด๋น ๋์ ๋๋ฆฌ์ ์ฌ์ํ์์ ์ธ๋ฑ์ค ๋ถ๋ถ์ ์ฌ์ํ์๋ณ๋ก ์ ๋ ฌํด์ค๋ค.
๊ฐ key๋ฅผ ๊ฐ์ง๊ณ ์ดํฉ์ ๊ณ์ฐํด์ค๋ค.(๊ฐ ์ฅ๋ฅด๋ณ ์ด ์ฌ์ํ์)
์ดํฉ์ ๊ฐ์ง๊ณ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ ๋ ฌ ํด์ค๋ค.
์ ๋ต์ ๊ฐ ๋์ ๋๋ฆฌ๋ณ๋ก 2๊ฐ์ฉ ๋ค๊ณ ์์ ์ถ๊ฐํ๋ค.
์ด๋ ๊ฒ ์๋์ฝ๋๋ ์ ๋์๋๋ฐ ๊ตฌํ ๋ถ๋ถ์์ ๋งํ๋ ๋ถ๋ถ์ด ๋ง์์ต๋๋ค..
1๋ฒ, 3๋ฒ, 5๋ฒ์ ์ด๋ป๊ฒ ์ ๋์ง๋ง 2๋ฒ,4๋ฒ์์ ์์ง lambdaํจ์๊ฐ ์ต์ํ์ง ์์์ ๋งํ๋ ๋ถ๋ถ์ด ๋ง์์ต๋๋ค..
๊ทธ๋ฅ lambda๋ง ์์ผ๋ฉด ์ด๋ป๊ฒ ์ ์ธ ์ ์๊ฒ ์ง๋ง ๋ฐ๋ณต๋ฌธ๊น์ง ๊ฐ์ด ์ฐ๋ ค๊ณ ํ๋๊น ์ฐธ ํ๋ค๋๋ผ๊ตฌ์
๐ ์๋กญ๊ฒ ์๊ฒ๋ ๋ด์ฉ
lambdaํจ์์ ๊ดํด์ ํ๋ฒ ์ ๋ฆฌ๋ฅผ ํด์ผํ ๊ฒ ๊ฐ์ต๋๋ค.. ํด์๋ฅผ ์ด๋์ ๋ ํ ์ ์๋ค๊ณ ์๊ฐํ๋๋ฐ ์๋ง ์ฝํ ์์ ์ฝ๊ฒ ๋์๋๋ฐ lambda๋ฅผ ์ ๋ชป์ฐ๋๊น ๋งํ๋ ๋ถ๋ถ์ด ์๊ธฐ๋ ํ๋๋ผ๊ตฌ์
๊ทธ๋ฆฌ๊ณ ์ฝํ ๋ฑ ๋ฌธ์ ๋ฅผ ํ๋ ์ด๋ค ์์ผ๋ก ํ์ง ์ฐ์ ํ๋์ฉ ์ ์ด๋๊ณ ํธ๋ ์ต๊ด์ ๊ฐ์ง๋ ค๊ณ ํฉ๋๋ค ์ค๋ ์ฝ๋์ ๊ฐ์ด!
๊ทธ๋ ๊ฒ ์ํ๋๊น ์ค๊ฐ์ ๋งํ๋ ๋ถ๋ถ์์ ์ด๋์ ๋งํ๋์ง ๋ชฐ๋ผ์ ์๊ฐ์ ๋ค์ ๋คํ๋ ์ฐธ์ฌ๊ฐ ๋ฐ์ํ์์ต๋๋ค..