해당 문제는 여기에서 확인 가능합니다.
해당 문제는 주어진 문자열을 살펴보며 산과 계곡을 계산하는 문제입니다.
문자열을 순회하면서 'U'는 위로 올라가는 단계를 나타내고 'D'는 아래로 내려가는 단계를 나타내며 여행을 마치면서 0으로 돌아온 경우, 즉 해수면에 도착한 경우를 계곡으로 간주합니다.
따라서 다음과 같은 접근 방법으로 코드를 작성할 수 있습니다.
- 변수 count를 사용하여 현재 위치를 추적합니다. 'U'인 경우 1을 더하고 'D'인 경우 1을 뺍니다.
- 변수 valley_flag를 사용하여 계곡에 들어간 상태를 추적합니다.
- 'U' 단계에서 들어간 계곡을 나타내는 조건을 검사합니다. count가 0이 되면서 valley_flag가 참인 경우에 계곡으로 간주하고 valley_count를 증가시킵니다.
- 'D' 단계에서 계곡에 들어간 상태를 나타내는 조건을 검사합니다. count가 0보다 작아지면서 valley_flag가 거짓인 경우에 valley_flag를 참으로 설정합니다.
이러한 방식으로 문자열을 순회하면서 산과 계곡을 정확하게 계산할 수 있습니다.
다음은 위에서 소개한 접근 방법을 통해 작성한 코드입니다.
#!/bin/python3
import os
#
# 아래는 countingValleys 함수입니다.
# 이 함수는 다음과 같은 매개변수를 받습니다:
# 1. INTEGER steps - 총 단계 수
# 2. STRING path - U(위로 올라가는 단계)와 D(아래로 내려가는 단계)로 이루어진 문자열
#
def countingValleys(steps, path):
count, valley_count, valley_flag = 0, 0, False
for i in range(steps):
count += 1 if path[i] == 'U' else -1
# 현재 위치가 0이 되면서 valley_flag가 참인 경우, 계곡으로 간주하고 valley_count를 증가시킵니다.
if count == 0 and valley_flag:
valley_count += 1
valley_flag = False
# 현재 위치가 0보다 작아지면서 valley_flag가 거짓인 경우, valley_flag를 참으로 설정합니다.
elif count < 0 and not valley_flag:
valley_flag = True
return valley_count
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
# 사용자로부터 입력을 받아 변수에 저장합니다.
steps = int(input().strip())
path = input()
# countingValleys 함수를 호출하고 결과를 출력 파일에 씁니다.
result = countingValleys(steps, path)
fptr.write(str(result) + '\n')
# 파일을 닫습니다.
fptr.close()