본문 바로가기
프론트엔드로 가는 길/프로그래머스

44. 문자열밀기

by woody-j 2023. 4. 19.

https://school.programmers.co.kr/learn/courses/30/lessons/120921#
[ 문제 설명 ]

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고
밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

 

[ 문제 풀이 ]

 

첫번째 풀이

function solution(A, B) {
  let countString = 0;

  while (true) {
    if (A === B) {
      break;
    }
    let changeString = A.slice(0, -1); //hell
    A = A.charAt(A.length - 1).concat(changeString); //ohell
    countString++;
    if (A.length == countString) {
      return -1;
    }
  }
  return countString;
}

1. 무한 루프 내에서 A===B 동일 시 루프 종료 

2. changeString 변수에 저장A를 오른쪽으로 한 칸 밀기 위해 A의 마지막 문제를 제외한 나머지 부분 (A.slice(0, -1))

3. (A.charAt(A.length - 1).concat(changeString) A의 마지막 문자와 changeString을 연결하여 A 갱신 

4. countString 변수를 증가

5. A !== B가 동일할 수 없는 경우 => A.length === countString : return -1

 

두번째 풀이

let solution=(a,b)=>(a+a).indexOf(b)

1. a+a : a와 동일한 a 문자를 추가하여 새로운 문자 생성

2. indexOf(b) : 새로 생성된 문자에서 b를 찾는다 없으면 return -1

'프론트엔드로 가는 길 > 프로그래머스' 카테고리의 다른 글

46. 로그인 성공  (1) 2023.04.21
45. 특이한 정렬  (1) 2023.04.20
43.등수매기기  (0) 2023.04.19
42. 치킨 쿠폰  (1) 2023.04.17
41. 프로그래머스_제곱수 판별하기  (0) 2023.02.15