지식 테스트

8433 단어 csharp
3단계 링크를 받은 지식 테스트를 수행했지만 불행히도 2단계에서 멈췄습니다.

첫 번째 단계는 모든 단어의 중간 문자를 가져오도록 요청합니다.
단어의 길이가 짝수이면 중간 자릿수 2개를 반환하고 그렇지 않으면 중간 자릿수를 반환합니다.

해결책

public static string GetMiddle(string s)
{
  if(s.Length <= 2) return s;

  var isEven = s.Length % 2 == 0;

  // I remove 1 digit because de array is 0 index;
  // I always round up for de odd words, even words the division is exact
  // rounding up odd words, i dont need to handle with even/odd on the 1 subtraction
  var middleDigit = (int)Math.Ceiling(s.Length * 1M / 2M) - 1;

  return s.Substring(middleDigit, isEven ? 2 : 1);
}


이 시점에서 모든 것이 정상입니다.


두 번째 단계에서는 100, 50, 20과 같은 값으로 ATM 디스펜서의 메모를 세도록 요청했습니다.

출금
  • $260
  • $40
  • $230
  • $250

  • 출력
  • {2, 0, 3}
  • {0, 0, 2}
  • {1, 1, 4}
  • {2, 1, 0}

  • 해결책

    public static int[] Withdraw(int amount)
    {
      var result = new int[] { 0,0,0 };
    
      var note100Result = (int)Math.Floor(amount * 1M / 100M);
    
      if(note100Result > 0)
      {
        var remainValue = amount - (note100Result * 100);
    
        if(remainValue % 50 !=0)
          if(remainValue % 20 !=0)
            note100Result--;
    
        result[0] = note100Result;
    
        if(note100Result > 0)
          amount -= note100Result * 100;
      }
    
      var note50Result = (int)Math.Floor(amount * 1M / 50M);
    
      if(note50Result > 0)
      {
        var remainValue = amount - (note50Result * 50);
    
        if(remainValue % 20 !=0)
          note50Result--;
    
        result[1] = note50Result;
    
        if(note50Result > 0)
          amount -= note50Result * 50;
      }
    
      var note20Result = (int)Math.Floor(amount * 1M / 20M);
    
      if(note20Result > 0)
      {
        result[2] = note20Result;
      }
    
      return result;
    }
    


    논리는 다음과 같습니다. 나머지 값이 다른 음표 중 하나에 대해 완전히 나눌 수 있으면 다른 음표로 진행할 수 있습니다. 그렇지 않으면
    현재 음 카운터에서 1음을 빼야 합니다.

    물론 이것은 루프와 Linq를 예로 들면 다른 방법으로 수행할 수 있지만 더 설명하기 쉽게 이렇게 하는 것이 좋습니다.


    2단계도 안끝나서 3단계도 못봤네요 :(


    앞서 말했듯이 나는 이 단계에서 멈춰 있었다. 나는 긴 하루의 작업 후에이 테스트를 수행 했으므로 내 두뇌가 이런 작업을 할 수 없었습니다.

    이 테스트에 대한 내 팁:
  • 스트레스를 받지 않는 순간에, 스냅을 취하거나 숙면을 취한 후(당신이 이 순간을 분명히 선택할 수 있다면)
  • 좋은 웹페이지 즐겨찾기