본문 바로가기

취업/코딩테스트

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

문제 - 가장 가까운 같은 글자

 

정답

- toCharArray()로 문자열을 문자 배열로 변환

- 동일한 문자 위치(인덱스)를 알기 위해 문자열 배열 buffer 선언

class Solution {
    public int[] solution(String s) {
        char[] sArray = s.toCharArray(); // 문자열 문자 배열로 바꾸기
        char[] buffer = new char[s.length()];
        int[] answer = new int[s.length()];
        
        for (int i=0; i<s.length(); i++){ // 문자열 길이에는 length(), 배열 길이는 length
            for (int j=0; j < buffer.length; j++){
                if (buffer[j] == sArray[i]){ // 앞서 저장된 같은 문자가 있는지 확인
                    answer[i] = i-j; // 같은 문자가 있으면 인덱스 차이 저장
                    
                    buffer[i] = sArray[i]; // 현재 문자 저장
                    buffer[j] = 0; // 이전에 있던 같은 문자 삭제
                    break;
                }
            }
            if (answer[i] == 0){ // 같은 문자가 없었으면
                buffer[i] = sArray[i]; // 현재 문자 저장
                answer[i] = -1;
            }
        }
        
        return answer;
    }
}

 

시간복잡도

이중 for문으로 O(n^2)

 

다른 사람 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/142086/solution_groups?language=java