C#

[프로그래머스 힌트/답/해석] 문자열 밀기

Guk-blog 2024. 1. 30. 15:47
728x90
반응형

힌트

더보기

- 문자열을 한 칸씩 밀었을 때 B가 나오면 문자열을 민 횟수를, 아니면 -1을 리턴한다

- 원하는 문자열을 더 붙였을 때 A와 일치하는 인덱스를 확인하면 민 횟수를 확인할 수 있다

예시)

A "apple", B "pleap"

B+B = "pleappleap"

정답

더보기

방법 1

int answer = (B+B).IndexOf(A);
return answer;

방법 2

static int Solution70(string A, string B)
{
    int answer = -1;
	for(int i = 0; i < B.Length; i++){
   	 if(B.Equals(A)){
   	     answer = i;
    	    break;
   	 }
    	A = MoveToString(A);
	}
	return answer;
}
static string MoveToString(string str){
    var linqArr = str.Select((x,i)=> i!=0 ? str.Skip(i-1).First() : str.Last());
    return string.Concat(linqArr);
}

해석

더보기

 

- 방법 1은 힌트에서 말한 내용을 코드로 표현한 것

if(B.Equals(A)){
                    answer = i;
                    break;
                }

문자열 A, B가 일치하면 해당 인덱스를 저장하고 반복문을 멈춘다

A = MoveToString(A);

문자열 A를 한 칸씩 미는 함수의 리턴값을 저장한다

var linqArr = str.Select((x,i)=> i!=0 ? str.Skip(i-1).First() : str.Last());

 문자의 인덱스가 0이 아닐 때 이전 문자를 0이라면 마지막 문자를 저장한다

 

728x90
반응형