programmers. 가장 가까운 같은 글자

산기슭곰발자·2023년 11월 28일

문제 자체가 굉장히 난해하게 보인다.

다만 입출력 예를 확인하게 될때 몇가지를 확인해 볼 수 있다.
1. 처음나온 숫자는 무조건 -1을 return 하게된다.
2. 다만 두번 이상 나온 string 마지막 중복값의 인덱스 - 처음 나왔던 stiring의 index 값이 나온다.
ex) banana라고 가정을 했을때 처음 a는 -1를 push, 두번째 나온 a의 Index는 4가나오며 마지막 a의 index는 6이나온다.

  • 즉 값은 (-1, -1, -1, 2(4번째의 index - 처음 a의 인덱스 2), 2, 2) 식으로 풀 수 있다. 식을 짜보도록 하자.
    function solution(s) {
     let answerArr = [];
     let spliceS = s;
     s = s.split(''); = 해당 코드는 주어진 s의 값을 split으로 하나하나씩 쪼개기 위함이다.
     
     let arr = []; = 프로그래머스에 기본 내장된 코드이다. 다만 배열을 써야하니 없다면 써두도록 하자.
     
     	for (let i = 0; i < s.length; i++){
     		let answer = -1
        	for (let y = 0; y < i; y++){
           if(s[i] == s[y]){
           answer = i - splicesS.substr(0, i).lastIndexOf(s[y]);
           }
        }
     	return answerArr
    }
    오늘 새롭게 알게된(?) 익숙치 않은 method인 lastIndexOf(), substr이다.

문제를 푼 순서에 대해서 수도코딩을 하게끔 항상 염두를 하고 있어 순차적으로 나열 해보자면.


  1. s는 문자열이기에 하나하나씩 분해해서 비교가 필요하기에 split('')을 사용하여 하나하나 분리해주었다.
  2. 배열을 돌려 let = i를 s의 길이보다 적게끔 반복문을 돌렸으며 그 자리에 answer = -1을 넣어주게 되었다.
  3. 추후 비교해야할 대상이 있으므로 for문을 한번 더 돌려 s의 i 와 s의 y가 같다면 i에서 분리한 s의 substring(문자열 자르기 0번째에서 i번째까지)의 마지막 인덱스를 빼준 값을 push하게 된다.

설명을 내가 적어도 아직까지 헷갈리는 부분이 있기에 substr과 lastIndexOf는 추후에 다시 글을 게재할 예정이다.

항상 코딩을 하거나 알고리즘을 짰을때 이런식으로 만들어보면 괜찮을 것 같은데 에서 실행하는 코드 작성력(?)이 떨어진다고 생각한다. 많은 method 사용법이나 코드를 많이 작성하거나 적어보는 연습이 필요하다고 여겨진다.

vscode에서 예제를 적어보는게 많은 도움이 된다고 하니 연습을 통해서 알고리즘 문제에서 문법 및 코드작성 방법을 틀리는 우를 범하지 않도록 신경쓰도록하자.

profile
곰처럼 개발해보자.

0개의 댓글