ํฐ์คํ ๋ฆฌ ๋ทฐ
[2020 KAKAO BLIND RECRUITMENT]๋ฌธ์์ด ์์ถ_์ ๊ท ํํ์์ ๋ณ์ ํ ๋น
choi95 2021. 9. 2. 12:14๋ฌธ์
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ๋ฌธ๊ฐ๊ฐ ๋๊ณ ์ถ์ "์ดํผ์น"๋ ๋ฌธ์์ด์ ์์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๊ณ ์์ต๋๋ค. ์ต๊ทผ์ ๋๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ฐ๋จํ ๋น์์ค ์์ถ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถ๋ฅผ ํ๊ณ ์๋๋ฐ, ๋ฌธ์์ด์์ ๊ฐ์ ๊ฐ์ด ์ฐ์ํด์ ๋ํ๋๋ ๊ฒ์ ๊ทธ ๋ฌธ์์ ๊ฐ์์ ๋ฐ๋ณต๋๋ ๊ฐ์ผ๋ก ํํํ์ฌ ๋ ์งง์ ๋ฌธ์์ด๋ก ์ค์ฌ์ ํํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ๊ณ ์์ต๋๋ค.
๊ฐ๋จํ ์๋ก "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๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
sresult
"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์ด ๋ฉ๋๋ค.
๋ฌธ์ ํ์ด
- ์ํ ๋ฒ์ ์ง์ : ์ฃผ์ด์ง ๋ฌธ์์ด s๋ฅผ ์๋ฅผ ์ ์๋ ๋จ์๋ ์ต์ 1 ~ ์ต๋ ๋ฌธ์์ด s์ ๊ธธ์ด
- ์๋ก์ด ๋ฐฐ์ด ์์ฑ: ์ธ๋ฑ์ค ๊ฐ๋งํผ ๋ฌธ์์ด ์์๋ฅผ ๊ตฌ๋ถ ์ง์ ์๋ก์ด ๋ฐฐ์ด ์์ฑ
- ๋ฌธ์์ด ๋น๊ต: ํ์ฌ์ ์ด์ ์์๊ฐ ๊ฐ์ ๋ฌธ์์ด๋ฉด ์์ ๋ณ์ cnt ๊ฐ ๊ฐ์ฐ, ๋ค๋ฅธ ๋ฌธ์์ด๋ฉด ์์ ๋ณ์ cnt์ ํ์ฌ ์์ ๋ฌธ์๋ฅผ ์ ์ฅ
์ ๊ท ํํ์์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด ์์๋ฅผ ์ง๊ธฐ ์ํด์๋ ๋ณ์์ธ ์ธ๋ฑ์ค์ ๊ฐ์ ๋์ ์ผ๋ก ๋ฐ์๋ค์ด๊ฒ๋ ์ฒ๋ฆฌํด์ค์ผ ํ๋๋ฐ, ๊ธฐ์กด ์ ๊ท ํํ ๋ฆฌํฐ๋ด ํ์์ผ๋ก ๋ณ์๋ฅผ ๋ด๋ถ์ ํ ๋นํ ์ ์์๋ค.
์ด์ ๊ฒ์ํด๋ณธ ๊ฒฐ๊ณผ ๋ค์๊ณผ ๊ฐ์ฒด ์์ฑ ํ์์ผ๋ก ์ ๊ท ํํ์์ ์์ฑํ๋ฉด ๋ณ์๋ฅผ ๋์ ์ผ๋ก ํ ๋นํ ์ ์์๋ค.
var pattern = new RegExp('์ฒดํฌํ๊ณ ์ถ์ํจํด๋ฌธ์์ด');
https://stackoverflow.com/questions/494035/how-do-you-use-a-variable-in-a-regular-expression
๋ฌธ์์ด์ ๋น๊ตํ ๋ ์ด๋ค ์ฐ์ฐ์ ์ํํด์ผ ๋ ์ง ๊ณ ๋ฏผ์ด ๋์๋๋ฐ ์ด์ ์ ํ์๋ ๋ฌธ์์ด ์์ถ์ด ์๊ฐ์ด ๋์ ํด๋น ๋ฌธ์ ๋ฅผ ํ๋ฒ ๋ ํ์ด๋ณธ ๋ค, ํด๋น ๋ฌธ์ ์ ๋น์ทํ ์ฐ์ฐ์์ผ๋ก ์ ์ฉํ์๋ค.
https://choi95.tistory.com/45?category=881084
์ฝ๋
function solution(s) {
var answer = Number.MAX_SAFE_INTEGER;
for(let i = 0; i < s.length; i++) {
let re = new RegExp(`\\D{${i + 1}}`, 'g'); //ํ์ฌ ์ธ๋ฑ์ค ๋จ์๋งํผ ๋ฌธ์ ์๋ฅด๊ธฐ
let pattern = s.match(re); //์๋ฅธ ๋จ์๋งํผ ์๋ก์ด ๋ฐฐ์ด ์์ฑ
let cnt = 1;
let tmp = '';
if(s !== pattern.join('')) pattern.push(s.substring(s.length - (s.length - pattern.join('').length)));
//์๋ฅด๊ณ ๋จ์ ๋ฌธ์์ด ๋ฃ์ด ์ฃผ๊ธฐ
for(let i = 0; i < pattern.length; i++) {
if(pattern[i] === pattern[i + 1]) cnt++;
else {
if(cnt > 1) {
tmp += String(cnt);
tmp += pattern[i];
}
else tmp += pattern[i];
cnt = 1;
}
}
let cp = tmp.length;
answer = Math.min(answer, cp);
}
return answer;
}
'์๊ณ ๋ฆฌ์ฆ > ๊ธฐ์ถ ๋ฐ ๋ฐฑ์ค ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[2018 KAKAO BLIND RECRUITMENT 1์ฐจ]๋ด์ค ํด๋ฌ์คํฐ๋ง_JS Set๊ณผ Map ๊ฐ์ฒด์ ํ์ฉ (0) | 2021.10.11 |
---|---|
[์๊ฐ ์ฝ๋ ์ฑ๋ฆฐ์ง ์์ฆ2]๊ดํธ ํ์ ํ๊ธฐ (0) | 2021.10.09 |
[2018 KAKAO BLIND RECRUITMENT]๋น๋ฐ์ง๋ (0) | 2021.09.01 |
[๋ฐฑ์ค 1874๋ฒ]์คํ ์์ด (0) | 2021.08.27 |
[2018 KAKAO BLIND RECRUITMENT]๋คํธ ๊ฒ์_regExp.match ๋ฉ์๋์ ๋ํด ํ์ต (0) | 2021.08.26 |