가장 가까운 같은 글자

Heeeoh·2023년 2월 17일
0

프로그래머스

목록 보기
9/26
post-thumbnail

🔍문제 분석

✔️ 출처

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

📖 문제


String 문제

🔅 문제풀이

list사용


import java.util.ArrayList;

class Solution {
    public int[] solution(String s) {
        ArrayList<Character> list = new ArrayList<>();
        int[] answer = new int[s.length()];
        int tmp = 0;
        
        for(int i = 0; i < s.length(); i++){
            if(list.contains(s.charAt(i))) {
                tmp = list.indexOf(s.charAt(i));
                answer[i] = i - tmp;
                list.set(tmp, 'A');

            } else {
                answer[i] = -1;
            }
            
            list.add(s.charAt(i));
        }
        
        return answer;  
    }
}

처리 속도가 느리다.


🔅 다른 사람 풀이

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 ch = s.charAt(i);
            answer[i] = i-map.getOrDefault(ch,i+1);
            map.put(ch,i);
        }
        return answer;
    }
}


맵을 생각하긴 했는데 put메소드로 같은 key를 넣고 값을 바꾸면 계속 변한다는것이 생각이 안났다.

❗ 오답노트 / 필요한 지식

  1. charAt()을 char 변수로 담자
  2. 이제는 ArrayList만 쓰지말고 다양한 자료구조에 접급해봐야겠다.
profile
열심히 살자

0개의 댓글