자료구조&알고리즘/프로그래머스

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

yong_ღ'ᴗ'ღ 2023. 11. 13. 15:27

 

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

 

프로그래머스

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

programmers.co.kr

 

문제)

문자열 s에서, 각 문자 c에서 자신보다 앞에 나오는 문자 중 가장 가까운 자기와 같은 글자와의 거리차이 구하기

앞에 자신과 같은 문자가 없다면 -1

 

 

접근 방식) 

1. 문자와 그 문자의 위치를 저장할 HashMap, 정답배열 int[] answer 생성

2. 문자열 s만큼 반복문 돌면서, 해당 문자가

     → map에 없으면, answer배열에 -1 저장

     → map에 있으면, 현재 위치 - map에 저장된 위치

3. map에 현재 문자와 위치 넣음

4. 정답배열 반환

 

import java.util.*;
class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        HashMap<Character, Integer> map = new HashMap<>();
        
        for (int i = 0; i < s.length(); i++) {
            char now = s.charAt(i);
            if (!map.containsKey(now))
                answer[i] = -1;    
            else 
                answer[i] = i - map.get(now);
            map.put(now, i);
        }
        
        return answer;
    }
}