[Java]가장 가까운 같은 글자

2025. 3. 28. 11:10·코딩테스트/Java

문제

문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.
예를 들어, s="banana"라고 할 때,  각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.

b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다.
a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다.
n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다.
a는 자신보다 두 칸, 네 칸 앞에 a가 있습니다. 이 중 가까운 것은 두 칸 앞이고, 이는 2로 표현합니다.
따라서 최종 결과물은 [-1, -1, -1, 2, 2, 2]가 됩니다.

문자열 s이 주어질 때, 위와 같이 정의된 연산을 수행하는 함수 solution을 완성해주세요.

 

 

✏️ 좋은 코드

import java.util.HashMap;
import java.util.Map;

class Solution {
    public int[] solution(String s) {
        int[] answer = new int[s.length()];
        Map<Character, Integer> maps = new HashMap<>();
        
        for (int i = 0; i < s.length(); i++) {
            if (!maps.containsKey(s.charAt(i))) {
                answer[i] = -1;
                maps.put(s.charAt(i),i);
                continue;
            }
            
            answer[i]= i-maps.get(s.charAt(i));
            maps.put(s.charAt(i),i);
        }
        
        return answer;
    }
}

 

 

처음에 List를 활용하려 했지만 index 를 관리하기 어려워 구글링을 통해 Map 을 이용한 방법을 찾았다.

이 문제 뿐만아니라 키 와 값을 이용한 다른 문제들도 많았기 때문에 설계를 시작부터 잘해야할것 같다.

 

 

'코딩테스트 > Java' 카테고리의 다른 글

[Java] 2016년  (0) 2025.04.16
[Java]푸드 파이트 대회  (1) 2025.04.15
[Java]숫자 문자열과 영단어  (0) 2025.03.25
[Java]행렬의 덧셈  (0) 2025.03.13
[Java]정수 내림차순으로 배치하기  (0) 2025.03.04
'코딩테스트/Java' 카테고리의 다른 글
  • [Java] 2016년
  • [Java]푸드 파이트 대회
  • [Java]숫자 문자열과 영단어
  • [Java]행렬의 덧셈
코딩로봇
코딩로봇
금융 IT 개발자
  • 코딩로봇
    쟈니의 일지
    코딩로봇
  • 전체
    오늘
    어제
    • 분류 전체보기 (143)
      • JavaScript (8)
      • SQL (10)
      • 코딩테스트 (30)
        • Java (15)
        • SQL (13)
      • Java (10)
      • 프로젝트 (25)
        • 트러블슈팅 (9)
        • 프로젝트 회고 (14)
      • git,Github (2)
      • TIL (38)
      • Spring (18)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스파르타 코딩 #부트캠프 #첫ot
    java #arraylist #list #배열
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩로봇
[Java]가장 가까운 같은 글자
상단으로

티스토리툴바