연습 - 메서드에서 문자열 반환

완료됨

문자열을 반환하는 메서드를 작성해야 하는 경우가 많이 있습니다. 예를 들어 데이터 세트에서 문자열을 검색하거나 어떤 식으로든 문자열을 수정해야 할 수 있습니다. 이 연습에서는 일반적인 면접 질문을 연습하면서 메서드에서 문자열을 사용하는 경험을 얻을 수 있습니다.

문자열을 반환하는 메서드 만들기

코딩 면접의 후보라고 가정해 보겠습니다. 면접관이 string.Reverse를 사용하지 않고 문자열의 문자 순서를 반전하는 메서드를 작성하도록 요청합니다. 어떻게 하면 이 작업을 수행할 수 있는지 잠시 생각해 보세요.

문자열의 끝에서 반복하여 문자 순서를 반전할 수 있다고 결정했을 수 있습니다. 임시 문자열을 사용하여 끝에서 처음까지 각 문자를 저장할 수 있습니다. 그럼 시작하겠습니다.

  1. Visual Studio Code 편집기에서 이전 연습의 기존 코드를 모두 삭제합니다.

  2. 편집기에 다음 코드를 입력합니다.

    string ReverseWord(string word) 
    {
        string result = "";
    
        return result;
    }
    
  3. 메서드는 지정된 단어를 반복하고 결과를 업데이트해야 합니다. 이렇게 하려면 ReverseWord 메서드를 다음 코드로 업데이트합니다.

    string ReverseWord(string word) 
    {
        string result = "";
        for (int i = word.Length - 1; i >= 0; i--) 
        {
            result += word[i];
        }
        return result;
    }
    

    이 코드 블록에서는 word.Length - 1를 사용하여 단어의 끝에서 시작합니다. 배열 인덱스가 0부터 시작하므로 길이에서 1을 빼고 범위를 벗어난 요소에 액세스하지 않으려고 합니다. 그런 다음 현재 인덱스의 문자를 result 문자열에 추가하고 인덱스를 역방향으로 이동합니다. 루프의 코드가 실행된 후 i >= 0가 업데이트되므로 i을 사용하고 0번째 인덱스를 포함해야 합니다.

코드 테스트

코딩할 때 작업을 자주 확인하는 것이 중요합니다. 코딩 프로세스 초기에 실수를 찾아 수정하면 하나의 대규모 프로그램을 디버그하는 대신 올바른 코드를 빌드하는 데 더 많은 시간을 할애할 수 있습니다. 작업을 자주 확인하는 것은 코딩 면접관이 높게 평가하는 스킬입니다.

  1. 새 빈 코드 줄을 입력합니다. 그런 다음, 일부 입력 텍스트를 만들고 ReverseWord 메서드 위에 다음 코드를 입력하여 메서드를 호출합니다.

    string input = "snake";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseWord(input));
    
  2. 필요한 경우 Visual Studio Code의 통합 터미널 패널을 엽니다.

  3. 터미널 명령 프롬프트에서 dotnet 실행을 입력합니다. 출력을 다음과 비교합니다.

    snake
    ekans
    

    코드가 예상과 다른 결과를 표시하는 경우 코드를 검토하여 오류를 찾고 업데이트해야 합니다. 코드를 다시 실행하여 문제가 해결되었는지 확인합니다. 코드가 예상 결과를 생성할 때까지 코드를 계속 업데이트하고 실행합니다.

문장에서 단어의 문자 순서를 반전하는 메서드 만들기

면접관이 후속 질문을 한다고 가정해 보겠습니다. 지정된 문장에서 각 단어의 원래 위치를 유지하면서 각 단어의 문자 순서를 반전하도록 요구합니다. 각 단어는 공백으로 구분되어 있다고 가정할 수 있습니다. 예를 들어 "string return type"은 "gnirts nruter epyt"가 됩니다. 어떻게 하면 이 작업을 수행할 수 있는지 잠시 생각해 보세요.

이전 작업에서 만든 메서드를 사용한다면 각 단어의 문자 순서를 개별적으로 반전할 수 있습니다. 새 문장을 만들고 반전된 각 단어를 추가할 수 있습니다. 그럼 시작하겠습니다.

  1. 현재 프로그램의 끝에 새 빈 코드 줄을 만듭니다. 다음 코드를 입력하여 새 메서드를 만듭니다.

    string ReverseSentence(string input) 
    {
        string result = "";
    
        return result;
    }
    
  2. 다음으로 string.Split를 사용하여 문장에서 개별 단어를 추출할 수 있습니다. ReverseSentence 메서드를 다음과 같이 업데이트합니다.

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        return result;
    }
    

    이제 문장의 개별 단어 각각에 액세스할 수 있으므로 각 단어에서 ReverseWord 메서드를 사용하고 result에 저장할 수 있습니다.

  3. ReverseSentence 메서드를 다음과 같이 업데이트합니다.

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        foreach(string word in words) 
        {
            result += ReverseWord(word) + " ";
        }
    
        return result;
    }
    

    복합 할당 연산자 내에서 ReverseWord 메서드를 호출할 수 있습니다. 이 코드에서 반환 값이 ReverseWord로부터 캡처되어 result에 추가됩니다. 반환 값을 제공하는 메서드는 데이터 형식이 요구 사항에 부합하는 한 필요한 모든 위치에서 사용할 수 있습니다.

    이 코드에서 반전된 각 단어는 공백과 함께 결과에 추가됩니다. 그러나 이로 인해 반전된 문장의 끝에 추가 공백이 하나 남습니다.

  4. string.Trim을 사용하여 끝에서 추가 공백을 제거할 수 있습니다. 메서드를 다음 코드로 업데이트합니다.

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        foreach(string word in words) 
        {
            result += ReverseWord(word) + " ";
        }
    
        return result.Trim();
    }
    

    이 메서드의 반환 결과를 잠시 생각해 보세요. 메서드는 데이터 형식이 일치하는 한 실행 전체에서 그리고 return 문에서도 다른 메서드를 사용할 수 있습니다.

    이제 메서드를 호출할 준비가 되었습니다.

  5. input 텍스트와 Console.WriteLine 문을 다음과 같이 업데이트합니다.

    string input = "there are snakes at the zoo";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseSentence(input));
    

작업 확인

이 작업에서는 통합 터미널에서 애플리케이션을 실행하고 코드가 올바르게 작동하는지 확인합니다. 이제 시작하겠습니다.

  1. 코드를 다음과 비교하여 올바른지 확인합니다.

    string input = "there are snakes at the zoo";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseSentence(input));
    
    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
        foreach(string word in words) 
        {
            result += ReverseWord(word) + " ";
        }
        return result.Trim();
    }
    
    string ReverseWord(string word) 
    {
        string result = "";
        for (int i = word.Length - 1; i >= 0; i--) 
        {
            result += word[i];
        }
        return result;
    }
    
  2. Ctrl + S를 사용하거나 Visual Studio Code 파일 메뉴를 사용하여 작업을 저장합니다.

  3. 필요한 경우 Visual Studio Code의 통합 터미널 패널을 엽니다.

    탐색기 패널에서 TestProject 폴더 위치에서 터미널을 열려면 TestProject를 마우스 오른쪽 단추로 클릭한 다음 통합 터미널에서 열기를 선택합니다.

  4. 터미널 명령 프롬프트에서 dotnet run을 입력합니다.

  5. 코드가 다음 출력을 생성하는지 확인합니다.

    there are snakes at the zoo
    ereht era sekans ta eht ooz 
    

    코드가 다른 결과를 표시하는 경우 코드를 검토하여 오류를 찾고 업데이트해야 합니다. 코드를 다시 실행하여 문제가 해결되었는지 확인합니다. 코드가 예상 결과를 생성할 때까지 코드를 계속 업데이트하고 실행합니다.