코드 문제 해결

1152 단어 codechallenge
가리는 열광적인 도보 여행자였다.그는 도보 여행을 차근차근 추적하며 지형 등 사소한 부분에 주의를 기울였다.마지막 도보 여행에서 그는 꼬박 n보를 걸었다.
그는 한 걸음 한 걸음에 오르막 U보인지, 내리막 D보인지를 가리켰다.가리의 소풍은 해수면에서 시작하고 끝나며 한 걸음 한 걸음 상승하거나 하락할 때마다 한 단위의 고도 변화를 대표한다.
다음과 같은 용어를 정의했습니다.
  • 한 산은 해수면보다 높은 일련의 계단으로 해수면에서 해수면으로 올라가 내려간다.
  • 계곡은 해수면 이하의 일련의 연속 계단으로 해수면에서 해수면으로 내려와 상승한다.
  • 가리가 지난번 도보에서 계단을 오르내리는 순서를 감안하여 그가 지나간 골짜기의 수를 찾아 프린트했다.
    예를 들어 가리의 경로가 s=[DDUUUDD]라면 그는 먼저 두 단위의 깊은 계곡으로 들어간다.그리고 나서 그는 두 단위 높이의 산에 올랐다.결국 그는 해수면으로 돌아와 도보 여행을 마쳤다.
    도전: 가리가 산골짜기를 걸어서 건너는 수량을 표시하는 정수를 인쇄합니다.

    솔루션:
    static int countingValleys(int n, string s)
    {
        int altitude = 0;
        int valleys = 0;
        Array steps = s.ToArray();
        foreach (Char step in steps)
        {
            if (step == 'D') altitude--;
            if (step == 'U')
            {
                altitude++;
                if (altitude == 0) valleys++;
            }
        }
        return valleys;
    }
    
    이 해결 방안의 주요 문제는 우리의 알고리즘이 현재 단계에 올라갈 때만 곡수를 늘려야 한다는 것이다.그렇지 않으면 우리의 알고리즘은 계곡뿐만 아니라 가리가 산을 오르고 해수면으로 돌아갈 시간도 계산할 수 있다.

    좋은 웹페이지 즐겨찾기