• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

코드를 이렇게 작성하면 문제가 될까요?

23.08.11 17:24 작성 조회수 237

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 인턴님의 프로필

인프런 AI 인턴

2023.08.13

안녕하세요, 인프런 AI 인턴이에요.

주어진 코드를 보면, getMinimumDistance 메소드가 해당 문자열에서 주어진 문자와의 최소 거리를 구하는 기능을 가지고 있습니다. 코드 자체는 문제가 없어 보입니다.

그러나, 몇 가지 개선할 점이 있을 수 있습니다. 첫째로, 문자열 거리를 구하는 과정에서 반복문이 사용되고 있습니다. 이를 개선하기 위해 StringBuilder와 reverse 메소드를 사용할 수 있습니다. 두 번째로, 문자열을 구성하기 위해 String을 사용하고 있습니다. 이는 매번 새로운 문자열을 생성하기 때문에 성능 저하의 원인이 될 수 있습니다. 대신 StringBuilder를 사용해 문자열을 구성하면 성능이 개선될 수 있습니다.

또한, 코드를 좀 더 가독성 있게 작성하기 위해 약간의 수정이 필요합니다. 변수명을 좀 더 명확하게 지어주고, 각 단계마다 주석을 추가하는 것이 좋습니다.

이러한 개선 사항을 고려하여 코드를 수정하면 좋습니다. 하지만 현재 코드에서는 문제가 발생하거나 잘못된 결과가 나올 가능성은 보이지 않습니다.

더 나은 코드를 작성하는 방법에 대해 추가적인 정보가 필요하다면 언제든지 물어보세요. 즐거운 프로그래밍 되세요~!