2021. 11. 30. 14:24ใProgramming/Algorithms
1. ๋ฌธ์
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด C ์ ํฐ ๋ฌธ์ ์ ์ค ํ๋๋ ์ธ์ด ์ฐจ์์์ ๋ฌธ์์ด ๋ณ์ํ์ ์ง์ํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. C ์์๋ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ฌธ์์ด์ ํํํ๋ \0 (NULL) ๋ก ๋ฌธ์์ด์ ๋์ ์ง์ ํ๋๋ฐ, ์ด๋์๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ฝ๊ฒ ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
void strcat(char* dest, const char* src) {
// dest ์ ๋ง์ง๋ง ์์น๋ฅผ ์ฐพ๋๋ค
while(*dest) ++dest;
// src ๋ฅผ ํ ๊ธ์์ฉ dest ์ ์ฎ๊ฒจ ๋ถ์ธ๋ค
while(*src) *(dest++) = *(src++);
// ๋ฌธ์์ด์ ๋์ ์๋ฆฌ๋ \0 ์ ์ถ๊ฐํ๋ค
*dest = 0;
}
์ด๋ฐ ๋ฌธ์ ์ค ํ๋๋ก ๋ฌธ์์ด์ ์กฐ์ํ๋ ํจ์๋ค์ ๋์ ์๊ฐ์ด ๋ถํ์ํ๊ฒ ์ปค์ง๋ค๋ ๊ฒ์ด ์์ต๋๋ค. ์์ ์ฃผ์ด์ง ํจ์ strcat() ์ ๋ฌธ์์ด dest ๋ค์ src ๋ฅผ ๋ถ์ด๋ ํจ์์ธ๋ฐ, ์คํ ๊ณผ์ ์์ ๋ฐ๋ณต๋ฌธ์ ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ํฉํ ๋งํผ ์ํํด์ผ ํฉ๋๋ค. ์ด ํจ์๋ฅผ ์ฌ์ฉํด ๋ ๊ฐ์ ๋ฌธ์์ด์ ํฉ์น๋ ๋น์ฉ์ ๋ ๋ฌธ์์ด์ ๊ธธ์ด์ ํฉ์ด๋ผ๊ณ ํฉ์๋ค.
์ด ํจ์๋ฅผ ์ด์ฉํด n ๊ฐ์ ๋ฌธ์์ด์ ์์์ ์๊ด์์ด ํฉ์ณ์ ํ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ์์๊ฐ ์๊ด ์๋ค๋ ๋ง์ {al,go,spot} ์ spotalgo ๋ก ํฉ์น๋ alspotgo ๋ก ํฉ์น๋ ์๊ด ์๋ค๋ ์๋ฏธ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์์ด์ ํฉ์น๋ ์์์ ๋ฐ๋ผ ์ ์ฒด ๋น์ฉ์ด ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋จผ์ al ๊ณผ go ๋ฅผ ํฉ์น๊ณ (2+2=4), ์ด๊ฒ์ spot ๊ณผ ํฉ์น๋ฉด (4+4=8) ์ด 12 ์ ๋น์ฉ์ด ๋ค์ง๋ง al ๊ณผ spot ์ ํฉ์น๊ณ (2+4=6) ์ด๊ฒ์ ๋ค์ go ์ ํฉ์น๋ฉด (6+2=8) ์ด 14 ์ ๋น์ฉ์ด ํ์ํฉ๋๋ค.
n ๊ฐ์ ๋ฌธ์์ด๋ค์ ๊ธธ์ด๊ฐ ์ฃผ์ด์ง ๋ ํ์ํ ์ต์ ๋น์ฉ์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
2. ํ์ด
// ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ์ฃผ์ด์ง ๋, ํ๋๋ก ํฉ์น๋ ์ต์ ๋น์ฉ์ ๊ตฌํ๋ค.
int concat(const vector<int>& lengths) {
priority_queue<int, vector<int>, greater<int> > pq;
for (int i = 0; i < lengths.size(); ++i) {
pq.push(lengths[i]);
}
int ret = 0;
while (pq.size() > 1) {
int min1 = pq.top();
pq.pop();
int min2 = pq.top();
pq.pop();
pq.push(min1 + min2);
ret += (min1 + min2);
}
return ret;
}
3. ํํ๋ง ์ฝ๋ (Huffman Code)
- ํ์์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ์ ์ธ ์์๋ก, ๊ฐ๋ณ ๊ธธ์ด ์ธ์ฝ๋ฉ ํ ์ด๋ธ์ ๋ง๋๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ๋ฌ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ๋๋ค.
- ํํ๋ง ์ฝ๋๋ฅผ ํตํ์ฌ ์๋ฌธ ๊ธ์๋ค์ ์ถํ ๋น๋๊ฐ ์ฃผ์ด์ง ๋, ์์ ๊ธธ์ด๋ฅผ ์ต์ํํ๋ ๋นํธ ํจํด์ ์ป์ ์ ์๋ค.
์ฆ ํํ๋ง ์ฝ๋๋ ์ฃผ์ด์ง ๋ฐ์ดํฐ ํ์ผ์ ๋ฌธ์ ๊ฐ์ n์ ๋ํ์ฌ, ํด๋น ๋ฐ์ดํฐ ํ์ผ์ ์ด์ง ์ฝ๋๋ก ์์ถํ๊ธฐ ์ํ ์ต์ ์ ์ด์ง ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ค.
- ๋น๋ ์์ ๋ฐ๋ผ, ๋น๋ฒํ๊ฒ ์ถํํ๋ ๊ธ์๋ ์งง์ ํจํด์ผ๋ก, ๋๋ฌผ๊ฒ ์ถํํ๋ ๊ธ์๋ ๋ ๊ธด ํจํด์ผ๋ก ๋ฐฐ๋นํ๋ค.
- ์ฐ์ ์์ ํ๋ฅผ ํตํ์ฌ, ๊ฐ์ฅ ์์ ๋ ๋ ธ๋ ๋์ ๊บผ๋ด์ด ํฉ์ณ๊ฐ๋ฉด์ ํธ๋ฆฌ๋ฅผ ๊ตฌํํ๋ค.
4. git-hub
- https://github.com/SohyeonKim-dev/AlgorithmicProblem/blob/main/GreedyMethod/strJoin.cpp
5. ์ถ์ฒ
- https://algospot.com/judge/problem/read/STRJOIN
- https://withhamit.tistory.com/12
'Programming > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด] NUMBERGAME : ์ซ์ ๊ฒ์ (0) | 2021.11.28 |
---|---|
[์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด] TICTACTOE game (0) | 2021.11.28 |
[์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด] ZIMBABWE (0) | 2021.11.27 |
[์๊ณ ๋ฆฌ์ฆ] ๋์ ๊ณํ๋ฒ, ๋ฉ๋ชจ์ด์ ์ด์ ์ด๋? (0) | 2021.11.27 |