인프런 커뮤니티 질문&답변

소연님의 프로필 이미지
소연

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

1-10 가장 짧은 문자거리 문제에서 어디가 틀린걸까요?

작성

·

243

·

수정됨

0

강사님이 설명해주신 방법이랑 조금 다르게 풀었는데, 계속 오답이 나와서 문의드립니다.

어느 부분이 틀린 건지 못찾겠습니다

도와주세요..

import java.util.Scanner;

public class Main {

	public int[] solution(String str, char c){
		
		int tmp=0;
		int[] answer = new int[str.length()];
		for(int i=0; i<str.length(); i++) {
			if(str.charAt(i)!=c) {
				tmp++;
			} else {
				tmp=0;
			}
			answer[i] = tmp;
		}
		
		for(int i=0; i<answer.length-1; i++) {
			if(answer[i]!=0 && answer[i+1]==0) {
				int arrayTmp = answer[i];
				for(int j=0 ; j<arrayTmp/2 ; j++) {
					answer[i-j] = 1 + j;						
				}
			}
		}
		
		return answer;
	}
	
	public static void main(String[] args) {
			
		Main T = new Main();
		Scanner scanner = new Scanner(System.in);
		String str = scanner.next();
		char c =scanner.next().charAt(0);
		for(int a : T.solution(str, c)) {
			System.out.print(a+ " ");
		}
	}
}

답변 2

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

abc c 를 입력하면 1 1 0이 나옵니다. 2 1 0이 나와야 하는데 왜 a의 거리가 2가 아니라 1이 나오는지 디버그해보세요.

0

안녕하세요, 인프런 AI 인턴이에요. 제공해주신 코드를 살펴보니, 문자열에서 특정 문자와의 거리를 구하는 문제인 것 같아요.

아래는 코드를 분석한 후, 문제가 발생할 수 있는 부분을 안내해드릴게요.

문제의 설명에 따르면, 문자열 str에서 특정 문자 c와의 거리를 배열에 저장하는 문제인데, 코드를 보면 다음과 같은 로직으로 동작합니다.

  1. 문자열 str의 각 문자를 순회하면서 특정 문자 c와의 거리를 구합니다.
  2. 거리가 0이 아닐 경우, 배열 answer에 거리 값을 저장합니다.
  3. 거리가 0인 부분을 찾아서 이전 값(1부터 감소)으로 거리 값을 업데이트합니다.

위의 로직을 기반으로 코드를 분석해봤는데, 아무런 오류가 보이지 않습니다. 그러므로 코드의 문제는 없을 것으로 보입니다.

오답이 발생하는 부분이 있을 수 있으니, 다음 부분을 확인하셔야 할 것 같아요.

  1. 입력 데이터를 잘못 지정하신 경우입니다. 예를 들어, 문자열과 특정 문자 사이에 공백이 들어간 경우 오류가 발생할 수 있습니다. 입력 데이터를 정확하게 입력하셨는지 확인해주세요.
  2. 문제의 요구사항과 코드의 동작이 일치하는지 확인하세요. 문제의 조건과 로직이 일치하지 않을 경우 오답이 발생할 수 있습니다.

이외에도 오답이 발생할 수 있는 다양한 요소들이 있을 수 있으나, 코드를 보았을 때 특정한 문제가 없어보입니다. 추가로 질문이 있으시면 답변해드릴게요.

소연님의 프로필 이미지
소연

작성한 질문수

질문하기