본문 바로가기

프로그래머스57

[프로그래머스/파이썬] 올바른 괄호 -Code def solution(s): stack = [] for i in s: if stack and stack[-1] == '(' and i == ')': stack.pop() else: stack.append(i) return True if not stack else False 2022. 5. 17.
[프로그래머스/파이썬] 괄호 회전하기 -Code def solution(s): answer = 0 for n in range(len(s)): stack = [] if n != 0: s = s[1:] + s[0] for i in s: if stack and stack[-1] == '[' and i == ']': stack.pop() elif stack and stack[-1] == '{' and i == '}': stack.pop() elif stack and stack[-1] == '(' and i == ')': stack.pop() else: stack.append(i) if not stack: answer += 1 return answer 2022. 5. 17.
[프로그래머스/파이썬] 튜플 -Code def solution(s): answer = [] li = sorted(list(s[2:-2].split("},{")), key=lambda x: len(x)) for a in li: a = a.split(',') for b in a: b = int(b) if b not in answer: answer.append(b) return answer 처음에는 stack을 이용해 풀려했으나 출력하는 리스트가 계속 정렬이 되어서 다른 방법을 찾았습니다. split을 이용하니 더 쉽게 만들어져서 해결을 했습니다. 2022. 5. 17.
[프로그래머스/파이썬] 짝지어 제거하기 -Code def solution(s): stack = [] for i in s: if stack and i == stack[-1]: stack.pop() else: stack.append(i) return 1 if len(stack) == 0 else 0 2022. 5. 17.
[프로그래머스/파이썬] 가장 큰 수 -Code def solution(numbers): numbers = [str(number) for number in numbers] numbers.sort(key=lambda x: x*3, reverse=True) return str(int(''.join(numbers))) 처음에 스트링으로 바꿔서 sort로 하려고 하다가 3과 34, 30이 문제가 되어서 해결이 안되서 수열로 받아 해결을 하려 했으나 이경우 너무 커지게 되면 시간 초과가 생기게 되었습니다. 그래서 방법을 찾아보니 *3인 값으로 하게되면 333과 303030, 343434로 되어서 구별하여 정렬이 가능하게 되고 최대 수가 999이기 때문에 *3으로 해야 해결이 가능하는 걸알고 수정 했습니다. 그후 테스트 케이스 11이 틀려서 알아보니 .. 2022. 5. 17.
[프로그래머스/파이썬] 소수 찾기 -Code from itertools import permutations def solution(numbers): cnt = 0 nums = [] for i in range(1, len(numbers) + 1): for j in permutations(numbers, i): s = '' for w in j: s += w s = int(s) if s >= 2: for k in range(2, s): if s % k == 0: break else: nums.append(s) return len(set(nums)) 2022. 5. 17.