-
파이썬 알고리즘 - 과반수 찾기, 괄호 유효성 검사일반 프로그래밍/알고리즘 2022. 4. 20. 22:38
문제 7 : 숫자로 이루어진 리스트 nums를 argument로 받았을때, 숫자중에서 과반수를 반환하라.
나의 답
def more_than_half(nums): for num in set(nums): #set를 통한 중복 거르기 if nums.count(num) >= (len(nums) / 2): return num # for i in nums: # if nums.count(i) > (len(nums) / 2): # return i
크게 어려울것 없는 문제였지만 생각할 점이 하나 있었는데 바로 처리 시간이다. 문제에서 테스트하는 nums의 길이는 길지 않아서 두번째 답을 이용해도 괜찮지만, nums의 길이가 길고 숫자가 다양하다면 첫번째 답처럼 set를 통해 for문의 처리 시간을 줄일 수 있을 것 같다.
문제 8 : s는 여러 괄호( (), {}, [] )들로 이루어진 String 인자다. 한 번 괄호를 시작했으면, 같은 괄호로 끝내야 하고, 괄호 순서가 맞아야 한다. 이러한 조건에 맞으면 True를 반환하고 아니면 False를 반환하라.
예 : {[]}는 유효하고 {][}는 유효하지 않다.
나의 답
def is_valid(s): for i in range(len(string)): s = s.replace('()', '').replace('[]','').replace('{}','') return True if len(s) == 0 else False
문자열의 replace 함수를 이용하면 되는 문제였다. 가장 안쪽 괄호가 완전한 괄호쌍이였을경우 이를 공백으로 바꾸고 그 과정을 반복하여 s의 길이가 0이 된다면 s는 유효한 괄호쌍으로만 이루어진 문자열이라서 True를 반환한다. 만약 for문이 끝나도 문자열의 길이가 1 이상일 경우 아직 문자열에 불완전한 괄호만 남아있는 것이므로 False를 반환하게 코드를 짰다.
'일반 프로그래밍 > 알고리즘' 카테고리의 다른 글
파이썬 알고리즘 - 복소수 곱 구하기, 배열 뒤집기 (0) 2022.04.26 파이썬 알고리즘 - 자주 등장한 숫자구하기, 넓이 구하기 (0) 2022.04.22 파이썬 알고리즘 - 공통시작단어 반환, 로마숫자 변환 (0) 2022.04.18 파이썬 알고리즘 - 알파벳의 중복이없는 가장 긴 단어/뒤집은수 일치 (0) 2022.04.14 파이썬 알고리즘 - 덧셈 수 찾기 / 숫자 뒤집기 (0) 2022.04.12