Skip to content

Latest commit

 

History

History
33 lines (27 loc) · 1.68 KB

풀이_LC830.md

File metadata and controls

33 lines (27 loc) · 1.68 KB

〽️ 830. Positions of Large Groups

  • Date : 2021.12.12(일)
  • Time : 25분

Problem

  • In a string s of lowercase letters, these letters form consecutive groups of the same character. For example, a string like s = "abbxxxxzyy" has the groups "a", "bb", "xxxx", "z", and "yy". A group is identified by an interval [start, end], where start and end denote the start and end indices (inclusive) of the group. In the above example, "xxxx" has the interval [3,6]. A group is considered large if it has 3 or more characters. Return the intervals of every large group sorted in increasing order by start index.

Constraints

  • 1 <= s.length <= 1000
  • s contains lower-case English letters only.

Example

  • Input: s = "abbxxxxzzy"
  • Output: [[3,6]]
  • Explanation: "xxxx" is the only large group with start index 3 and end index 6.

풀이

    def largeGroupPositions(self, s: str) -> List[List[int]]:
        res = []
        s += '0'
        start = 0
        for i in range(1,len(s)):
            if s[i] != s[i-1]:
                res.append([start,i-1])
                start = i
        return list(filter(lambda x: abs(x[0]-x[1]) >= 2, res))

: 같은문자의 연속적인 인덱스 구간을 구해서 그 중에 구간이 3이상이라면 그 구간을 return 하는 문제였다. 먼저 시작 인덱스를 0으로 잡아준다. 그리고 처음 인덱스의 문자와 그 다음 문자가 달라진다면 그 전 문자 인덱스를 한 그룹으로 저장해주고, 달라진 문자를 기준 인덱스로 다시 잡고 시작한다. 그리고 여기서도 large group을 판단하기 위해 filter를 사용해주었다. 고차함수는 써도써도 어려워..