인프런 커뮤니티 질문&답변
코드를 이렇게 작성하면 문제가 될까요?
해결된 질문
작성
·
352
0
public class GetMinimumDistance {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str = in.next();
        char ch = in.next().charAt(0);
        System.out.println(getMinimumDistance(str, ch));
        return;
    }
    public static String getMinimumDistance(String str, char ch) {
        List<Integer> distanceList = new ArrayList<Integer>();
        for(int i = 0; i < str.length(); i++) {
            String beforeStr = str.substring(0, i);
            StringBuilder sb = new StringBuilder(beforeStr);
            beforeStr = sb.reverse().toString();
            String afterStr = str.substring(i);
            int beforeDistance =  beforeStr.indexOf(ch) + 1;
            int afterDistance = afterStr.indexOf(ch);
            if(beforeStr.length() == 0 || beforeDistance == 0) beforeDistance = Integer.MAX_VALUE;
            if(afterStr.length() == 0 || afterDistance == -1) afterDistance = Integer.MAX_VALUE;
            distanceList.add(beforeDistance < afterDistance ? beforeDistance : afterDistance);
        }
        String answer = "";
        for (int dis : distanceList) {
            answer += Integer.toString(dis) + " ";
        }
        return answer.substring(0, answer.length() - 1);
    }
}
혹시 이렇게 작성하면 답은 맞는데 고쳐야 할 부분이라든가 있을까 고수님들 확인 부탁드립니다 ㅠㅠ
너무 비효율적으로 짠거 같아서요 ㅠㅠ
답변 2
0
안녕하세요^^
매 문자마다 해당 문자의 위치에서 왼쪽으로 indexOf, 오른쪽으로 indexOf해서 두 리턴값 중 작은 값을 거리로 택한 아이디어가 좋습니다. 보통 이런 생각을 쉽게 할 것 같지만 사실 이런 생각을 해내는 것이 쉽지 않고 구현하는 것도 쉽지 않습니다. 잘 하신 코드입니다.
영상의 방법도 잘 익혀두세요.
0
안녕하세요, 인프런 AI 인턴이에요.
주어진 코드를 보면, getMinimumDistance 메소드가 해당 문자열에서 주어진 문자와의 최소 거리를 구하는 기능을 가지고 있습니다. 코드 자체는 문제가 없어 보입니다.
그러나, 몇 가지 개선할 점이 있을 수 있습니다. 첫째로, 문자열 거리를 구하는 과정에서 반복문이 사용되고 있습니다. 이를 개선하기 위해 StringBuilder와 reverse 메소드를 사용할 수 있습니다. 두 번째로, 문자열을 구성하기 위해 String을 사용하고 있습니다. 이는 매번 새로운 문자열을 생성하기 때문에 성능 저하의 원인이 될 수 있습니다. 대신 StringBuilder를 사용해 문자열을 구성하면 성능이 개선될 수 있습니다.
또한, 코드를 좀 더 가독성 있게 작성하기 위해 약간의 수정이 필요합니다. 변수명을 좀 더 명확하게 지어주고, 각 단계마다 주석을 추가하는 것이 좋습니다.
이러한 개선 사항을 고려하여 코드를 수정하면 좋습니다. 하지만 현재 코드에서는 문제가 발생하거나 잘못된 결과가 나올 가능성은 보이지 않습니다.
더 나은 코드를 작성하는 방법에 대해 추가적인 정보가 필요하다면 언제든지 물어보세요. 즐거운 프로그래밍 되세요~!






감사합니다 선생님!