Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 가장 가까운 같은 글자 (자바/Java) 본문

알고리즘문제/프로그래머스(Java)

[프로그래머스] - 가장 가까운 같은 글자 (자바/Java)

luke-king 2024. 6. 12. 12:30

 

 

 

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


 

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        String[] split = s.split("");
        
        for(int i = 0; i < split.length; i++){
            int min = -1;
            
            for(int j = 0; j < i; j++){
                 if (split[i].equals(split[j])) {
                    min = 0;
                    min = i - j;
                }
            }
            answer[i] = min;
        }
        
        return answer;
    }
}

 

오늘 문제는 프로그래머스 "가장 가까운 같은 글자" 문제다.

이번 문제는 입력값을 받은 s의 문자를 하나씩 넘어가 같은 문자가 앞에 있다면 몇 칸 차이 나는지 구하면 된다.

다만 같은문자가 여러 개 있다면 가장 가까운 위치에 있는 칸 수를 출력하면 된다.

그럼 바로 문제풀이 해보겠다.

 

1. 문자열을 split()함수를 사용해 하나씩 나눠 배열로 담아준다.

 

2. 2중for문을 사용해 준다. 처음 나온 문자는 무조건 -1의 값이 나와 2번째 for문에는 j < 1이라는 식을 담았다.

예를 들자면 1번째 for문에 i = 3일경우(a) 2번째 for문은 j < 3 조건에 만족 시켜  'a'를 b, a, n을 비교해 몇 번째 칸인지 찾을 수 있는 것이다.

 

3. 조건식을 보면 split[i] 와 split[j]가 같다면 앞에 -1인 min을 0으로 초기화 시켜 주뒤 i - j를 해주면 몇 칸 앞에 있는지 구할 수 있다. 그럼 끝이다.