- Today
- Total
- ๋ค์ต์คํธ๋ผ
- ์กธ์ ์ํ
- CS
- MST
- ์๋ฐ์์ ์
- ๋ฌธ๋ฒ
- Graph
- ์๋ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๊ทธ๋ฆฌ๋
- Algorithm
- ๋ฐฑ์๋
- leetcode
- OOP
- ์์์ ๋ ฌ
- ํ๋ก๊ทธ๋๋จธ์ค
- dp
- ๊ตฌํ
- array
- tree
- java
- ๋ฒจ๋งํฌ๋
- ๋ฐฑ์ค
- ์ธํด
- database
- pytorch
- spring
- ์๋ฃ๊ตฌ์กฐ
- BFS
- PS
Partially Committed
[Algorithm] Tournament Winner ๋ณธ๋ฌธ
์ค๋ ํ์ด๋ณผ ๋ฌธ์ ์ํฉ์ Tournament Winner ์ด๋ค. Problem solving ์ค๋ ฅ์ ๊ฒจ๋ฃจ๋ Tournament Winner ๋ ์๋์ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
- ๊ฐ๊ฐ์ team ์ ์๋ก ๋ค๋ฅธ ์ธ์ด(C#, Python ...)๋ฅผ ์ฌ์ฉํ๋ค.
- ๊ฒฝ๊ธฐ ๋ฐฉ์์ round-robin ๋ฆฌ๊ทธ์ ์ด๋ฉฐ ๊ฐ ๊ฒฝ๊ธฐ ๋น home team, away team ์ด ์ง์ ๋๋ค.
- ๋์งํ๋ competitions 2์ฐจ์ ๋ฐฐ์ด์ ์ ์๋๋ฉฐ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ results ๋ฐฐ์ด๋ก ์ฃผ์ด์ง๋ค.
competitions = [
["HTML", "C#"],
["C#", "Python"],
["Python", "HTML"],
]
results = [0, 0, 1]
์์ ๊ฐ์ด ์ฃผ์ด์ก์ ๋, ๊ฐ๊ฐ์ ๋์งํ์ ์์ ํ์ home, ๋ค์ ํ์ away ์ด๋ค. ๊ทธ๋ฆฌ๊ณ results ๊ฐ 0 ์ด๋ฉด away ๊ฐ ์ด๊ธด ๊ฒ์ด๋ฉฐ 1 ์ด๋ฉด home ํ์ด ์น๋ฆฌํ ๊ฒ์ด๋ค. - ๊ฒฝ๊ธฐ์ ์น๋ฆฌํ ํ์ 3 point ๋ฅผ ์ป๊ฒ ๋๋ฉฐ, ์ต์ข ์ ์ผ๋ก ๊ฐ์ฅ ๋ง์ ์ ์๋ฅผ ๊ฐ์ง๊ณ ์๋ team ์ด ์ฐ์นํ์ด๊ณ , ์ฐ์นํ์ด ์ฌ๋ฌ๊ฐ ๋์ค๋ ๊ฒฝ์ฐ๋ ์ ์ธํ๋ค.
๊ฐ๊ฐ์ ํ์ hash table ์ <teamname, score> ์ ํํ๋ก ์ ์ฅํ๋ฉด ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค. competitions ๋ฐฐ์ด์์ teamname ์ ๋ฝ์๋ด์ hash_table ์ {teamname, 0} ์ ํํ๋ก insert ํด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฒฝ๊ธฐ ๊ฐ์๋งํผ loop ๋ฅผ ๋๋ฉฐ results ์ ์์์ ๋ฐ๋ผ์ home team, away team ์ 3์ ์ ๋ถ์ฌํ๋ค. ์ดํ์ hash_table ์ ์ํํ๋ฉฐ score ๊ฐ ๊ฐ์ฅ ๋์ teamname ์ ๋ฐํํ๋ฉด ๋๋ค.
๊ฒฝ๊ธฐ ๊ฐ์๋ฅผ N, ํ ๊ฐ์๋ฅผ K ๋ผ๊ณ ํ์ ๋ ์๊ฐ ๋ณต์ก๋๋ O(N) ์ด๊ณ ๊ณต๊ฐ ๋ณต์ก๋๋ O(K) ์ด๋ค.
#include <vector>
using namespace std;
// Time : O(N) (N is # of competitions)
// Space : O(k) (k is # of teams) ~ hash map
string tournamentWinner(vector<vector<string>> competitions,
vector<int> results) {
// Write your code here.
unordered_map<string, int> m;
for (vector<string> ele : competitions) {
m.insert({ ele[0], 0 });
m.insert({ ele[1], 0 });
}
for (int i = 0; i < competitions.size(); i++) {
if (results[i] == 1) {
// home team win
m[competitions[i][0]] += 3;
}
else {
// away team win
m[competitions[i][1]] += 3;
}
}
string winner = ""; int max_pt = -1;
for (auto ele : m) {
if (ele.second > max_pt) {
max_pt = ele.second;
winner = ele.first;
}
}
return winner;
}
https://github.com/versatile0010/AlgoExpert
'๐ฅ Algorithm || ๋ฌธ์ ํ์ด > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] Palindrome Check (0) | 2022.10.26 |
---|---|
[Algorithm] Non-Constructible Value (0) | 2022.10.25 |
[Algorithm] Sorted squared array ๋ฐํํ๊ธฐ (0) | 2022.10.24 |
[Algorithm] Subsequence ํ๋ณํ๊ธฐ (2) | 2022.10.23 |
[Algorithm] ๋ฐฐ์ด ๋ด, ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ ์ ๊ฒ์ํ๊ธฐ (0) | 2022.10.22 |