๋ฌธ์ 
Arori | ๋น์ ์ ์ง์
ํ์๊ฐ์ ์กฐ๊ฑด์ด ๋ง๋์ง ๋ค์ํ๋ฒ ํ์ธํด์ฃผ์์
www.sysout.co.kr
๋ ๋ฌธ์์ด 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 |