본문 바로가기

컴퓨터/프로그래머스

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

문제: https://school.programmers.co.kr/learn/courses/30/lessons/142086

 

프로그래머스

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

programmers.co.kr

1. 코드

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        StringBuilder sb = new StringBuilder("");
        for(int i = 0; i < s.length(); i++) {
            if(sb.lastIndexOf(String.valueOf(s.charAt(i))) == -1)
                answer[i] = -1;
            else
                answer[i] = i - sb.lastIndexOf(String.valueOf(s.charAt(i)));
            
            sb.append(String.valueOf(s.charAt(i)));
        }
        return answer;
    }
}

2. 설명

int[] answer = new int[s.length()];
StringBuilder sb = new StringBuilder("");
for(int i = 0; i < s.length(); i++) {
    if(sb.lastIndexOf(String.valueOf(s.charAt(i))) == -1)
        answer[i] = -1;
    else
        answer[i] = i - sb.lastIndexOf(String.valueOf(s.charAt(i)));

    sb.append(String.valueOf(s.charAt(i)));
}

answer의 길이는 문자열 길이 수와 동일하며 문자열에 대한 모든 문자에 접근하는데 lastIndexOf() 메서드를 사용하여 임의의 문자열(sb)에 존재하지 않다면 -1을 answer에 저장하며 만약 존재한다면 answer에 (현재 index - 찾은 index)을 저장합니다. 그리고 현재 문자를 임의의 문자열(sb)에 저장합니다.

3. 정리

  1. lastIndexOf() 메서드를 사용하여 가장 가까운 같은 글자의 index 값을 찾는다.
  2. answer[현재 index] = 현재 index - 가장 가까운 같은 글자의 index
출처: 프로그래머스 코딩 테스트 연습, 
https://school.programmers.co.kr/learn/challenges