본문으로 바로가기

문제의 조건에 따라 완성한 list를 반환한다.

LeetCode에서 푼 문제 리스트 보기

LeetCode에서 문제 보기

github에서 코드 보기

문제 조건

인자값으로 "I"와 "D"로만 구성된 문자열 S를 받는다.

N은 S의 길이 값이다.

반환해야 하는 결과값인 리스트 A는 0~N까지의 구성된 원소들로 구성되어 있다. 

단, 그 원소들의 순서는 다음과 같은 조건으로 정해진다.

문자열 S의 문자열이 "I"(Increase)이고 그 Index가 1이면 Index 1번째의 리스트 A의 원소는 그 다음번에 나타날 원소들 보다 가장 작아야 한다. 

문자열 S의 문자열이 "D"이고 그 Index가 2이면 Index 2번째 리스트 A의 원소는 그 다음버넹 나타날 원소들보다 가장 커야 한다.

문제 풀이

이미 주어진 조건에 의해서 가장 최솟값과 최댓값은 정해져 있다. 문자열이 "I"일 때는 최솟값 0부터 결과값인 리스트에 append해주고 최솟값을 증가시킨다. 문자열이 "D"일 때는 최댓값을 리스트에 append해준 다음 최댓값을 감소시킨다. 

파이썬 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution:
    def diStringMatch(self, S: str-> List[int]:
        """
        Runtime : faster than 72.85% of Python3
        Memory Usage : less than 5.62% of Python3
        """
        
        min_v = 0
        max_v = len(S)
        result_s = []
 
        for i in range(len(S)):
            if S[i] == "I":
                result_s.append(min_v)
                min_v += 1
            else:
                result_s.append(max_v)
                max_v -= 1
 
        result_s.append(min_v)
        return result_s        
cs