STRJOIN (๋์ด๋: ์ค)
๐ ๋ฌธ์ ์ค๋ช
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด 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 ๊ฐ์ ๋ฌธ์์ด๋ค์ ๊ธธ์ด๊ฐ ์ฃผ์ด์ง ๋ ํ์ํ ์ต์ ๋น์ฉ์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์
๋ ฅ
์
๋ ฅ์ ์ฒซ ์ค์๋ ํ
์คํธ ์ผ์ด์ค์ ์ c (c <= 50) ๊ฐ ์ฃผ์ด์ง๋๋ค.
๊ฐ ํ
์คํธ ์ผ์ด์ค์ ์ฒซ ์ค์๋ ๋ฌธ์์ด์ ์ n (1 <= n <= 100) ์ด ์ฃผ์ด์ง๋ฉฐ,
๋ค์ ์ค์๋ n ๊ฐ์ ์ ์๋ก ๊ฐ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ์ฃผ์ด์ง๋๋ค.
๊ฐ ๋ฌธ์์ด์ ๊ธธ์ด๋ 1,000 ์ดํ์ ์์ฐ์์
๋๋ค.
์ถ๋ ฅ
๊ฐ ํ
์คํธ ์ผ์ด์ค๋ง๋ค ํ ์ค์ ๋ชจ๋ ๋ฌธ์์ด์ ํฉ์น ๋ ํ์ํ ์ต์ ๋น์ฉ์ ์ถ๋ ฅํฉ๋๋ค.
์์ ์
๋ ฅ
3
3
2 2 4
5
3 1 3 4 1
8
1 1 1 1 1 1 1 2
์์ ์ถ๋ ฅ
12
26
27
๐ค ์๊ฐํ ์๊ณ ๋ฆฌ์ฆ
๊ฐ์ฅ ์์ ๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๋ํ์ ๋ ์ต์ ๋น์ฉ์ ๊ตฌํ ์ ์๊ธฐ ๋๋ฌธ์
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํด๊ฒฐํ ์ ์๋ค.
๊ฐ์ฅ ์์ ๋ ๊ฐ์ ์๋ก ๋ํ๊ณ popํด์ ๋ฌธ์์ด์์ ๋นผ๊ณ ๋ํ ๊ฐ์ ๋ค์
๋ฃ๊ณ ์ ๋ ฌํ๋ค.
๐ฅ๏ธ ์ฝ๋
def strjoin(str_length):
answer = 0
#์ ์ผ ์์๊ฑฐ ๋๊ฐ๋ฅผ ๋ํ๋ฉด ๋จ
for i in range(len(str_length)-1):
str_length.sort()
tmp = str_length.pop(0) + str_length.pop(0)
str_length.append(tmp)
answer += tmp
return answer
c = int(input())
for i in range(c):
n = int(input())
str_length = list(map(int, input().split()))
print(strjoin(str_length))