본문 바로가기
매일매일 코딩연습!/프로그래머스

[코딩연습5일차] 프로그래머스 : 스킬테스트 lv.2 문제들 (1)

by k-bonnie 2021. 1. 20.
728x90

(요새 코딩 문제 푸는 것도 재밌고

내일은 근교 여행(🙌🌊🤸‍♀️)을 가기로 해서 못 풀기 때문에

잠 안오는 김에 풀어본ㄷㅏ.

스킬테스트 lv.1을 통과해 버려서 이제는 lv.2부터 풀 수 있다ㅠㅠ

lv.2의 문제들은 어려우니까 하나씩 잘라 올리는 것으로..


문제 설명

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

  • ()() 또는 (())() 는 올바른 괄호입니다.
  • )()( 또는 (()( 는 올바르지 않은 괄호입니다.

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

입출력 예

s answer
()() true
(())() true
)()( false
(()( false

1차 답>> 문자열 slicing만 사용함.

def solution(s):
    answer = True
    
    if s[0] == '(' and s[-1] == ')' and s.count('(') == s.count(')'):
        answer = True         
    else:
        answer = False

    return answer

s의 시작이 '(' 이고, 마지막은 ')' 이고, (의 갯수가 )의 갯수와 같으면 answer은 True.. ← 로직이 완벽하다고 생각했는데...!

테스트 문제 4개 통과 & 효율성 통과이지만, 전체 문제 중 몇개 틀리는게 있다.

...whyrano?

(로 시작하고 )로 끝나고 괄호 갯수 같은데 쌍을 이루지 않는 경우가,,, 있나?

정확성이 떨어져서 실패한 코드. 왜그런지는 모른다.

왜 이 코드가 틀린지 지적해 주실 분,, 댓글 환영합니다ㅠ_ㅠ