๋ฌธ์
๋ ๋ฌธ์์ด s1๊ณผ s2๋ฅผ ๋ถ์ฌ์ ์ ๋ฌธ์์ด์ ๋ง๋ค๋ ค ํฉ๋๋ค. ์ด๋ํ ๋ฌธ์์ด์ ๋๊ณผ ๋ค๋ฅธ ๋ฌธ์์ด์ ์์์ด ๊ฒน์น๋ค๋ฉด ๊ฒน์น๋ ๋ถ๋ถ์ ํ ๋ฒ๋ง ์ ์ต๋๋ค.
์๋ฅผ ๋ค์ด s1 = 'ababc' / s2 = 'abcdab'์ผ ๋์๋์ ๊ฐ์ด s1 ๋ค์ s2๋ฅผ ๋ถ์ด๋ฉด ์ ๋ฌธ์์ด์ ๊ธธ์ด๋ 9์ ๋๋ค.
๊ทธ๋ฌ๋ s2 ๋ค์ s1์ ๋ถ์ด๋ฉด ์ ๋ฌธ์์ด์ ๊ธธ์ด๋ 8๋ก ๋ ์งง๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
๋ ๋ฌธ์์ด s1๊ณผ s2๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ s1๊ณผ s2๋ฅผ ๋ถ์ฌ์ ๋ง๋ค ์ ์๋ ๋ฌธ์์ด ์ค ๊ฐ์ฅ ์งง์ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ return ํ๋๋ก solution ๋ฉ์๋๋ฅผ ์์ฑํด์ฃผ์ธ์.
๋งค๊ฐ๋ณ์ ์ค๋ช
๋ ๋ฌธ์์ด s1๊ณผ s2๊ฐ solution ๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค.
- s1๊ณผ s2์ ๊ธธ์ด๋ 1 ์ด์ 100 ์ดํ์ ๋๋ค.
- s1๊ณผ s2๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
return ๊ฐ ์ค๋ช
s1๊ณผ s2๋ฅผ ๋ถ์ฌ์ ๋ง๋ค ์ ์๋ ๋ฌธ์์ด ์ค๊ฐ์ฅ ์งง์ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ return ํด์ฃผ์ธ์.
์์
s1 | s2 | return |
"ababc" | "abcdab" | 8 |
์์ ์ค๋ช
๋ฌธ์ ์ ์ฃผ์ด์ง ์์์ ๊ฐ์ต๋๋ค.
ํ์ด
์ค๋ช
s1์ ๋ท ๋ถ๋ถ๊ณผ s2์ ์ ๋ถ๋ถ์ ๋ฌธ์์ด์ด ๊ฐ์ ๊ฒฝ์ฐ ํฉ์ฑ๋๋ค. ๋๋ ํด๋น ๋ฌธ์ ๋ฅผ ***์์ ํ์***์ผ๋ก ํ์๋ค.
- ๋ฌธ์์ด s1 ์(๋ฅผ) ๋ค์ง์ ํ char ํ์ ์ผ๋ก ๋ฐฐ์ด์ ๋ง๋ ๋ค.
- ๋ค์ง์ ๋ฌธ์์ด s1๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ๋ณต๋ฌธ์ ์คํํด s2์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ ๋น๊ตํ๋ค.
- ๋ง์ฝ ์ผ์นํ๋ ์ธ๋ฑ์ค๊ฐ ์์ ๊ฒฝ์ฐ s2์ ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ ๋ฌธ์์ด์ ํ์ฌ ์์นํ ์ธ๋ฑ์ค์ ๋ค์ ์ธ๋ฑ์ค๊ฐ ๋ง๋์ง ํ์ํ๋ค.
์ฝ๋
package ๋ชจ๋ฐ์ผ๋ฆฌ๋_์ฝ๋ฉํ
์คํธ_03;
public class question_04 {
public int solution(String s1, String s2) {
// s1 ๋ฌธ์์ด์ ๋ค์ง์ด ๋ฐฐ์ด๋ก ์ ์ฅํ๋ค.
char[] arr1 = new char[s1.length()];
char[] arr2 = s2.toCharArray();
int t = 0;
for (int i = s1.length() - 1; i > -1; i--) {
arr1[t] = s1.charAt(i);
t++;
}
// ๋ค์งํ s1์ 0 ๋ฒ์งธ ์ธ๋ฑ์ค์ s2์ i ๋ฒ์งธ ์ธ๋ฑ์ค๊ฐ ๊ฐ์์ผ
// s1์ 1... ๋ฒ์งธ์ s2์ i + 1 ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๋น๊ตํ ์ ์๋ค.
int count = 0;
for (int idx = 0; idx < arr2.length; idx++) {
// s2 idx ๋ฒ์งธ ์ธ๋ฑ์ค ์ค ๋ค์งํ s1์ 0 ๋ฒ์งธ ์ธ๋ฑ์ค์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฐพ๋๋ค.
if (arr1[0] == arr2[idx]) {
System.out.println("arr1[" + 0 + "] = " + arr1[0] + " / arr2[" + idx + "] = " + arr2[idx]);
int k = 1;
// ์์ ์กฐ๊ฑด์ ๋ถํฉํ๋ค๋ฉด
for (int i = idx - 1; i > -1; i--, k++) {
// s2์ ์ธ๋ฑ์ค๋ฅผ ๋ค์ ์ญ์์ผ๋ก ํ์ํ๋ค.
// s1์ ์ธ๋ฑ์ค๋ฅผ ์์๋๋ก ํ์ํ๋ค.
if (k < arr1.length) {
count++;
System.out.println("arr1[" + k + "] = " + arr1[k] + " / arr2[" + i + "] = " + arr2[i]);
if (arr1[k] != arr2[i]) {
break;
}
}
}
break;
}
}
count += 1;
StringBuffer sb = new StringBuffer();
sb.append(s1);
sb.append(s2.substring(count));
System.out.println("ํฉ์ฑ ๊ฐ๋ฅ ์ธ๋ฑ์ค ๊ฐ์ = " + count);
System.out.println("๋ฌธ์์ด ํฉ์ฑ ๊ฒฐ๊ณผ = " + sb.toString());
int answer = sb.toString().length();
return answer;
}
// ์๋๋ ํ
์คํธ์ผ์ด์ค ์ถ๋ ฅ์ ํด๋ณด๊ธฐ ์ํ main ๋ฉ์๋์
๋๋ค.
public static void main(String[] args) {
question_04 sol = new question_04();
String s1 = new String("ababcz");
String s2 = new String("zabcdab");
int ret = sol.solution(s1, s2);
// [์คํ] ๋ฒํผ์ ๋๋ฅด๋ฉด ์ถ๋ ฅ ๊ฐ์ ๋ณผ ์ ์์ต๋๋ค.
System.out.println("solution ๋ฉ์๋์ ๋ฐํ ๊ฐ์ " + ret + " ์
๋๋ค.");
}
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค | ๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ, ์์ ํ์, HashSet (0) | 2020.12.11 |
---|---|
Cos Pro 1๊ธ | ๋น์์ด ์ด๋ ๊ฐ๋ฅํ ์นธ ๊ฐ์ ์ฐพ๊ธฐ (0) | 2020.12.10 |
Cos Pro 1๊ธ | ๋๋ฅด์์์ฆ ์ (0) | 2020.12.10 |
๋ฐฑ์ค 1322 | ๋นํธ ์ฐ์ฐ, X์ K (0) | 2020.11.25 |
๋ฐฑ์ค 1158 | Queue, ์์ธํธ์ค ๋ฌธ์ (0) | 2020.11.25 |