해결된 질문
작성
·
287
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를 사용해 문자열을 구성하면 성능이 개선될 수 있습니다.
또한, 코드를 좀 더 가독성 있게 작성하기 위해 약간의 수정이 필요합니다. 변수명을 좀 더 명확하게 지어주고, 각 단계마다 주석을 추가하는 것이 좋습니다.
이러한 개선 사항을 고려하여 코드를 수정하면 좋습니다. 하지만 현재 코드에서는 문제가 발생하거나 잘못된 결과가 나올 가능성은 보이지 않습니다.
더 나은 코드를 작성하는 방법에 대해 추가적인 정보가 필요하다면 언제든지 물어보세요. 즐거운 프로그래밍 되세요~!
감사합니다 선생님!