Algorithms/프로그래머스

[프로그래머스][Java] 가장 가까운 같은 글자

hyunki.Dev 2023. 1. 25. 01:08

문제

프로그래머스 - 가장 가까운 같은 글자

 

프로그래머스

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

programmers.co.kr

 

 

풀이

  • answer 가 초기에는 int[] 로 초기화 되어있지만 값을 넣기 편하게 List<Integer> 로 만들어서 사용
  • String 배열에 값을 구해야 하는 String 낱말 별로 넣어두기 Ex.)['b','a','n','a','n','a']
    • ❗️split 함수는 배열에서만 사용 가능
  • tempList 를 만들어서 해당하는 낱말이 없으면 -1을 answer에 넣고 있으면 인덱스값을 계산해서 answer에 넣어준다. 

  • 마지막으로 answer를  다시 int[] 로 변환 ➡️ Stream 사용해서 int[] 만들어서 넣어주기

 

 

코드

 

import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;

class Solution {
    public int[] solution(String s) {
        
        List<Integer> answer = new ArrayList<>();
        
        String[] stringArray;
        stringArray = s.split(""); //String 배열에 낱말 별로 넣어두기 ['b','a','n','a','n','a'] split 함수 배열만 가능
        
        List<String> tempList = new ArrayList<>();
        
        
        for(int i = 0; i<= s.length() - 1; i++){
        
            if(tempList.contains(stringArray[i])){
                tempList.add(stringArray[i]);
                answer.add(i - s.lastIndexOf(stringArray[i], i - 1)); 
        
            }
            else {
                tempList.add(stringArray[i]);
                answer.add(-1);
            }
        
        }
        
        return answer.stream()
                .mapToInt(i -> i)
                .toArray();
    }
}