- ๋์ ํ๋ก๊ทธ๋๋ฐ
- ํธ๋ฆฌ
- ๊ฐ์ฅ๊ฐ๊น์ด๊ณตํต์กฐ์
- ๋นํธ๋งต
- ์ด๋ถํ์
- go
- ๋ฐฑ์ค
- Python
- DP
- BFS
- ์ํฐ๋
- ํ๋ฆฌ์จ๋ณด๋ฉ
- ๋ฐฑ์๋ ํ๋ฆฌ์จ๋ณด๋ฉ
- ๋ค์ต์คํธ๋ผ
- ๋นํธ๋ง์คํน
- ์นด์นด์ค ์ฝํ
- js
- nestjs
- ์์ฝ๋
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
- ์นด์นด์ค2021
- ํ๋ก๊ทธ๋๋จธ์ค
- ์๊ณ ๋ฆฌ์ฆ
- ์น๋ฆฐ์ด
- DFS
- LCs
- Union-Find
- C++
- golang
- ์ฌ๊ท
- Today
- Total
Hello Ocean! ๐ผ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌธ์์ด ์์ถ ๋ณธ๋ฌธ
๋ฌธ์ ์ค๋ช
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ๋ฌธ๊ฐ๊ฐ ๋๊ณ ์ถ์ ์ดํผ์น๋ ๋ฌธ์์ด์ ์์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๊ณ ์์ต๋๋ค. ์ต๊ทผ์ ๋๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ฐ๋จํ ๋น์์ค ์์ถ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๊ณ ์๋๋ฐ, ๋ฌธ์์ด์์ ๊ฐ์ ๊ฐ์ด ์ฐ์ํด์ ๋ํ๋๋ ๊ฒ์ ๊ทธ ๋ฌธ์์ ๊ฐ์์ ๋ฐ๋ณต๋๋ ๊ฐ์ผ๋ก ํํํ์ฌ ๋ ์งง์ ๋ฌธ์์ด๋ก ์ค์ฌ์ ํํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ๊ณ ์์ต๋๋ค.
๊ฐ๋จํ ์๋ก aabbaccc์ ๊ฒฝ์ฐ 2a2ba3c(๋ฌธ์๊ฐ ๋ฐ๋ณต๋์ง ์์ ํ๋ฒ๋ง ๋ํ๋ ๊ฒฝ์ฐ 1์ ์๋ตํจ)์ ๊ฐ์ด ํํํ ์ ์๋๋ฐ, ์ด๋ฌํ ๋ฐฉ์์ ๋ฐ๋ณต๋๋ ๋ฌธ์๊ฐ ์ ์ ๊ฒฝ์ฐ ์์ถ๋ฅ ์ด ๋ฎ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด, abcabcdede์ ๊ฐ์ ๋ฌธ์์ด์ ์ ํ ์์ถ๋์ง ์์ต๋๋ค. ์ดํผ์น๋ ์ด๋ฌํ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฌธ์์ด์ 1๊ฐ ์ด์์ ๋จ์๋ก ์๋ผ์ ์์ถํ์ฌ ๋ ์งง์ ๋ฌธ์์ด๋ก ํํํ ์ ์๋์ง ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋ ค๊ณ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ababcdcdababcdcd์ ๊ฒฝ์ฐ ๋ฌธ์๋ฅผ 1๊ฐ ๋จ์๋ก ์๋ฅด๋ฉด ์ ํ ์์ถ๋์ง ์์ง๋ง, 2๊ฐ ๋จ์๋ก ์๋ผ์ ์์ถํ๋ค๋ฉด 2ab2cd2ab2cd๋ก ํํํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก 8๊ฐ ๋จ์๋ก ์๋ผ์ ์์ถํ๋ค๋ฉด 2ababcdcd๋ก ํํํ ์ ์์ผ๋ฉฐ, ์ด๋๊ฐ ๊ฐ์ฅ ์งง๊ฒ ์์ถํ์ฌ ํํํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ค๋ฅธ ์๋ก, abcabcdede์ ๊ฐ์ ๊ฒฝ์ฐ, ๋ฌธ์๋ฅผ 2๊ฐ ๋จ์๋ก ์๋ผ์ ์์ถํ๋ฉด abcabc2de๊ฐ ๋์ง๋ง, 3๊ฐ ๋จ์๋ก ์๋ฅธ๋ค๋ฉด 2abcdede๊ฐ ๋์ด 3๊ฐ ๋จ์๊ฐ ๊ฐ์ฅ ์งง์ ์์ถ ๋ฐฉ๋ฒ์ด ๋ฉ๋๋ค. ์ด๋ 3๊ฐ ๋จ์๋ก ์๋ฅด๊ณ ๋ง์ง๋ง์ ๋จ๋ ๋ฌธ์์ด์ ๊ทธ๋๋ก ๋ถ์ฌ์ฃผ๋ฉด ๋ฉ๋๋ค.
์์ถํ ๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์์ ์ค๋ช ํ ๋ฐฉ๋ฒ์ผ๋ก 1๊ฐ ์ด์ ๋จ์๋ก ๋ฌธ์์ด์ ์๋ผ ์์ถํ์ฌ ํํํ ๋ฌธ์์ด ์ค ๊ฐ์ฅ ์งง์ ๊ฒ์ ๊ธธ์ด๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
s์ ๊ธธ์ด๋ 1 ์ด์ 1,000 ์ดํ์
๋๋ค.
s๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
s | result |
"aabbaccc" | 7 |
"ababcdcdababcdcd" | 9 |
"abcabcdede" | 8 |
"abcabcabcabcdededededede" | 14 |
"xababcdcdababcdcd" | 17 |
์ ์ถ๋ ฅ ์์ ๋ํ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
๋ฌธ์์ด์ 1๊ฐ ๋จ์๋ก ์๋ผ ์์ถํ์ ๋ ๊ฐ์ฅ ์งง์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
๋ฌธ์์ด์ 8๊ฐ ๋จ์๋ก ์๋ผ ์์ถํ์ ๋ ๊ฐ์ฅ ์งง์ต๋๋ค.
์ ์ถ๋ ฅ ์ #3
๋ฌธ์์ด์ 3๊ฐ ๋จ์๋ก ์๋ผ ์์ถํ์ ๋ ๊ฐ์ฅ ์งง์ต๋๋ค.
์ ์ถ๋ ฅ ์ #4
๋ฌธ์์ด์ 2๊ฐ ๋จ์๋ก ์๋ฅด๋ฉด abcabcabcabc6de ๊ฐ ๋ฉ๋๋ค.
๋ฌธ์์ด์ 3๊ฐ ๋จ์๋ก ์๋ฅด๋ฉด 4abcdededededede ๊ฐ ๋ฉ๋๋ค.
๋ฌธ์์ด์ 4๊ฐ ๋จ์๋ก ์๋ฅด๋ฉด abcabcabcabc3dede ๊ฐ ๋ฉ๋๋ค.
๋ฌธ์์ด์ 6๊ฐ ๋จ์๋ก ์๋ฅผ ๊ฒฝ์ฐ 2abcabc2dedede๊ฐ ๋๋ฉฐ, ์ด๋์ ๊ธธ์ด๊ฐ 14๋ก ๊ฐ์ฅ ์งง์ต๋๋ค.
์ ์ถ๋ ฅ ์ #5
๋ฌธ์์ด์ ์ ์ผ ์๋ถํฐ ์ ํด์ง ๊ธธ์ด๋งํผ ์๋ผ์ผ ํฉ๋๋ค.
๋ฐ๋ผ์ ์ฃผ์ด์ง ๋ฌธ์์ด์ x / ababcdcd / ababcdcd ๋ก ์๋ฅด๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ ํฉ๋๋ค.
์ด ๊ฒฝ์ฐ ์ด๋ป๊ฒ ๋ฌธ์์ด์ ์๋ผ๋ ์์ถ๋์ง ์์ผ๋ฏ๋ก ๊ฐ์ฅ ์งง์ ๊ธธ์ด๋ 17์ด ๋ฉ๋๋ค.
ํ์ด
์ฒ์์ ์ด๋ป๊ฒ ํ์ด์ผ ํ ์ง ์ ํ ๊ฐ์ด ์ค์ง ์์ ์ง๋ฌธํ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ๋ค. ์ฌ๋๋ค์ด ๊ฒฐ๊ตญ ์์ ํ์(?)๊ณผ ๊ฐ์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ฒ์ฌํด๋ณด๋ ๋ฐฉํฅ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ๊ฒ ๊ฐ๊ธธ๋ ๋ง์ ๋๊ณ ๋ฐ๋ณต๋ฌธ์ ๋๋ ค๋ณด๊ธฐ๋ก ํ๋ค.
์ฃผ๋ชฉํ ๋ถ๋ถ
1. n์ 1๋ถํฐ ์ฃผ์ด์ง ๋ฌธ์์ด์ ๊ธธ์ด/2๊น์ง๋ง ๋ฐ๋ณตํ๋ค.
๋ฌธ์์ด/2 ๋ณด๋ค n์ด ํฌ๋ฉด, ํ ๋ฒ ์๋ฅด๊ณ ๋ค์ ๋จ์ ๋ถ๋ถ์ ๊ทธ๋๋ก ๋ถ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ์งง์ ์์ถ๋ฐฉ๋ฒ์ผ๋ฆฌ ์๊ธฐ ๋๋ฌธ์ด๋ค.
2. answer์ ์ด๊ธฐ๊ฐ์ 987654321๋ก ํ๋ค.
987654321์ด ์๋๋ผ int์ max๊ฐ์ ์ด์ฉํด๋ ๋ ๊ฒ ๊ฐ๋ค๊ฐ๋ฅํ answer์ ์ต๋๊ฐ์ ๋ฌธ์์ด์ ๊ธธ์ด!!์ด๋ค ๋ฐ๋ผ์ ์ด๋ ๊ฒ ํฐ ๊ฐ์ผ๋ก ์ํ๊ณ ๊ทธ๋ฅ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด ๊ธธ์ด๋ก ์ด๊ธฐํํด๋ ์ถฉ๋ถํ๋ค
3. ๋ฌธ์์ด์ ํ ๋ฒ ํ์ ๋, ์ธ๋ฑ์ค๋ฅผ n๊ฐ์ฉ ์ฆ๊ฐํ๋๋ก ํ๋ค
์ด๋ก ์ธํด ๋ค์ ๋จ์ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ n์ดํ์ผ ๊ฒฝ์ฐ ๋ฐ๋ณต๋ฌธ์ ๊ฑธ๋ฆฌ์ง ์์ ๋ฐ๋ก ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ์์ฑํ์๋ค
4. count์ ์๋ฆฌ์๋ฅผ ์๊ธฐ ์ํด to_string(count)๋ฅผ ์ด์ฉํ์๋ค.
๊ณ์ 10์ผ๋ก ๋๋ ์ ์๋ฆฟ์๋ฅผ ์๋ ค์ฃผ๋ ํจ์๋ฅผ ๋ง๋ค๋ป ํ์ง๋ง ๋คํํ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๊ฐ๋ฌ๋ค.
์ ์ถ ๊ฒฐ๊ณผ
์์ ๊ฐ์ ๋ถ๋ถ๋ค์ ๊ณ ๋ คํด์ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด์๋๋ฐ, 28๊ฐ์ ํ
์คํธ ์ผ์ด์ค ์ค์ '5๋ฒ'์ผ์ด์ค์์๋ง ์ค๋ต์ด ๋์๋ค.
์ง๋ฌธํ๊ธฐ๋ฅผ ์ดํด๋ณธ ๊ฒฐ๊ณผ 5๋ฒ ์ผ์ด์ค์ input์ 'a'์ ๊ฐ์ ๊ธธ์ด 1์ง๋ฆฌ์ ๋ฌธ์์ด์ด์๋ค.
๋ฐ๋ผ์ solutionํจ์ ๋ด์ ๋ฐ๋ณต๋ฌธ์ ๋๊ธฐ ์ ์ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 1์ด๋ฉด 1์ returnํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ์๋ค.
if (s.size() == 1) //s๊ฐ ํ ๊ธ์์ผ ๋
return 1;
์ต์ข ์ฝ๋
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int solution(string s) {
int answer = 987654321;
if (s.size() == 1) //s๊ฐ ํ ๊ธ์์ผ ๋
return 1;
for (int n = 1;n <= s.size() / 2;n++) { //n : ์๋ฅด๋ ๊ฐ์
int ans = 0;
string temp = "";
int count = 1;
for (int i = 0;i < s.size();i += n) {
if (i == 0) {
for (int j = 0;j < n;j++)
temp += s[j];
continue;
}
if (temp == s.substr(i, n)) { //์ด์ n๊ฐ์ ์ง๊ธ n๊ฐ๊ฐ ๊ฐ์ ๋
count++;
if (i + n >= s.size()) //๋จ์์๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ n๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋
//๋จ๊ฒจ์ง ๋ถ๋ถ์ ์ธ์ด์ฃผ๊ธฐ ์ํจ
ans = ans + to_string(count).size() + temp.size(); //count>1์ด๊ธฐ ๋๋ฌธ์ count๋ ๊ณ ๋ ค
}
else { //์ด์ n๊ฐ์ ์ง๊ธ n๊ฐ๊ฐ ๋ค๋ฅผ ๋
if (count == 1)
ans = ans + temp.size();
else
ans = ans + to_string(count).size() + temp.size();
count = 1; //count ๊ฐฑ์
temp = s.substr(i, n); //temp ๊ฐฑ์
if (i + n >= s.size()) { //๋จ์์๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ n๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋
//๋จ๊ฒจ์ง ๋ถ๋ถ์ ์ธ์ด์ฃผ๊ธฐ ์ํจ
ans = ans + temp.size(); //count==1์ด๊ธฐ ๋๋ฌธ์ count ๊ณ ๋ ค x
}
}
}
answer = min(answer, ans);
}
return answer;
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/์นด์นด์ค ์ฝํ ] ์คํ์ฑํ ๋ฐฉ (0) | 2020.11.22 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] 2020 ์นด์นด์ค/๊ดํธ ๋ณํ (0) | 2020.10.12 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฌํ ๊ฒฝ๋ก, C++ (0) | 2020.09.21 |
[์๊ณ ๋ฆฌ์ฆ] ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ (0) | 2020.09.21 |
[์๊ณ ๋ฆฌ์ฆ] MST (์ต์ ์ ์ฅ ํธ๋ฆฌ) (0) | 2020.09.21 |