본문 바로가기

Algorithm/Two Pointer

(Python3) - LeetCode (Easy) : 2825. Make String a Subsequence Using Cyclic Increments

반응형

https://leetcode.com/problems/make-string-a-subsequence-using-cyclic-increments

 

two pointer로 해결한 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

str1의 index i와 str2의 index j를 선언 후 각각 0으로 초기화합니다.

📔 풀이과정

* 한번에 str1의 여러 index를 골라 다음 알파벳으로 바꿀 수 있습니다. 따라서 i, j를 옮기면서 만들 수 있는지 여부를 비교합니다.

i가 str1의 길이 미만이면서 j도 str2의 길이 미만인 동안 while loop를 수행하며 다음을 진행합니다.

 

1. 현재 단어 c1, c2는 str1[i], str2[j]이므로 지역변수로 선언 후 각각 저장해줍니다.

 

2. c1이 c2와 같거나 c1의 다음 알파벳이 c2라면 연산에 포함할 수 있으므로 i와 j를 동시에 1씩 증가시킵니다. 아닌 경우는 확인할 필요 없으므로 i만 증가시킵니다.

📔 정답 출력 | 반환

j번째 알파벳을 모두 만들 수 있는지만 검사하면 되기 때문에 str2의 길이만큼 증가했는지 여부만 반환합니다.


📕 Code

📔 Python3

class Solution:
    def canMakeSubsequence(self, str1: str, str2: str) -> bool:
        i, j = 0, 0
        while i < len(str1) and j < len(str2):
            c1, c2 = str1[i], str2[j]
            if c1 == c2 or chr((ord(c1) + 1 - 97) % 26 + 97) == c2:
                i+=1
                j+=1
                continue
            i+=1
        return j == len(str2)

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.