다시 알고리즘 공부를 시작해보려고 쉬운 문제부터 다시 천천히 풀어보고 있습니다.



최근에 읽고 있는 책에서 기술 문제를 푸는 과정이나 접근방법에 대해서도 배우고 있어서 간단하게 기술 문제를 푸는 과정에 대해서 간단히 소개하고 문제를 풀어보도록 하겠습니다.



Cracking The Code Interview에서 소개한 기술 문제를 푸는 다섯 단계


1. 면접관에게 문제의 모호한 부분에 대해 묻는다.


2. 알고리즘을 설계한다.


3. 가상 코드 


4. 코드


5. 테스트




문제:


문자열의 입력을 받아서 해당 문자열에 들어 있는 소괄호가 올바른지 판단하는 함수를 만드시오.



알고리즘에서 체크해야하는 부분


- 괄호는 열리면 닫혀야 한다. (즉, 열리면 닫혀야함)


- 괄호는 열리는게 먼저다. 즉, 항상 열린 후에 닫혀야 한다.



코드:


def parenthesis_validator(a: str) -> bool:

    total: int = 0

    for w in a:

        if w == "(":

            total +=1

        elif w==")":

            total -=1

            if total <0:

                return False

    return True if total==0 else False



테스트:


class ValidatorTest(unittest.TestCase):

    testcase1 = "((abcd))"

    testcase2 = "(((abcd))"

    testcase3 = "((abcd)))"

    testcase4=""

    

    def test(self):

        self.assertEqual(parenthesis_validator(self.testcase1), True)

        self.assertEqual(parenthesis_validator(self.testcase2), False)

        self.assertEqual(parenthesis_validator(self.testcase3), False)

        self.assertEqual(parenthesis_validator(self.testcase4), True)


test = ValidatorTest()


test.test()



오랜만에 쉬운 문제풀이를 하나 포스팅했습니다. 


이제부터 꾸준히 알고리즘 문제를 풀고 공유하도록 하겠습니다.


감사합니다.




+ Recent posts