[Programmers / Python 풀이] 올바른 괄호 def solution(s): answer = True stack = [] for i in s: if stack: if i == '(': stack.append(i) else: stack.pop() else: stack.append(i) if stack: answer = False return answer 스택이 비어있다면 일단 괄호를 넣고 시작. 비어있지 않다면 조건문을 통해 비교. ( '(' 가 있다면 push ')'가 있다면 pop ) Programmers 2023.01.02
[Programmers / Python 풀이] 같은 숫자는 싫어 def solution(arr): answer = [] p = -1 for i in arr: if p != i: p = i answer.append(i) else: continue return answer 순회 할 때 마다 마지막 값을 저장 후 마지막 값과 현재 값이 같다면 continue 해준다. 그것이 아니라면 append Programmers 2023.01.02
[Programmers / Python 풀이] 푸드 파이트 대회 def solution(food): answer = '' ans = '' for i in range(1, len(food)): for j in range(food[i]//2): ans += str(i) answer = ans + '0' + ans[::-1] return answer 전체 음식을 순회하고, 이후 음식의 개수를 2로 나눈 몫 만큼만 더해서 한쪽 짝을 완성 시킨다. 이후 0 을 포함시키고 순서를 뒤집은 다른 짝을 합쳐준다. Programmers 2023.01.02
[Programmers / Python 풀이] 모의고사 def solution(answers): answer = [] mans = [0, 0, 0] pattern = [[1,2,3,4,5], [2,1,2,3,2,4,2,5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]] for i in range(len(pattern)): for j in range(len(answers)): ans = answers[j] if ans == pattern[i][j%len(pattern[i])]: mans[i] += 1 for i in range(len(mans)): if max(mans) == mans[i]: answer.append(i+1) return answer 각 사람들의 패턴을 먼저 파악 후 패턴들과 정답들을 비교 ( 정답 비교 방법은 패턴을 반복해서 정답.. Programmers 2022.12.27
[Programmers / Python 풀이] 과일 장수 def solution(k, m, score): answer = 0 box_lst = [] score.sort() while len(score) >= m: apple_lst = [] for i in range(m): a = score.pop() apple_lst.append(a) answer += min(apple_lst) * len(apple_lst) return answer 풀고 나서 다른 사람의 풀이를 보고 현타가 왔다.. 그래서 공부 할 겸 코드 분석 1. 익명의 고수(1) def solution(k, m, score): return sum(sorted(score)[len(score)%m::m])*m 오름차순으로 정렬 된 리스트들을 문자열 슬라이스를 통해 개수만큼 짜르되 박스들의 최소값들의 리스트.. Programmers 2022.12.27
[Programmers / Python 풀이] 기사단원의 무기 def solution(number, limit, power): answer = 0 power_lst = [] for i in range(1, number + 1): cnt = 0 for j in range(1, int(i**0.5)+1): if i % j == 0: cnt += 1 if j**2 != i: cnt += 1 if cnt > limit: answer += power else: answer += cnt return answer 시간초과를 조심해야 하는 문제 모든 약수는 짝이 있다. 하지만 그 수의 약수중에 제곱이 그 수와 같은 것이라면 약수는 1개뿐 예를 들어 16의 약수들을 보면 1 - 2 - 4 - 8 - 16 1과 16이 짝, 2와 8이 짝 이 되고, 4는 제곱했을 때 16이 된다. 그.. Programmers 2022.12.26
[Programmers / Python 풀이] 명예의 전당(1) def solution(k, score): answer = [] lst = [] for i in score: lst.append(i) if len(lst) == k and i k: lst.sort() lst.pop(0) answer.append(min(lst)) return answer Programmers 2022.12.26
[Programmers / Python 풀이] 문자열 나누기 def solution(s): answer = 0 word = s for i in range(len(word)): eq = 0 oth = 0 first_alpha = word[0] for j in range(len(word)): if eq != 0 and oth != 0 and eq == oth: word = word[j:] answer += 1 break if first_alpha == word[j]: eq += 1 elif first_alpha != word[j]: oth += 1 answer += 1 return answer Programmers 2022.12.22
[Programmers / Python 풀이] 가장 가까운 같은 글자 def solution(s): answer = [] for i in range(len(s)): max_dist = 100000 for j in range(i): if s[j] == s[i]: a = i-j if a < max_dist: max_dist = a if max_dist == 100000: answer.append(-1) else: answer.append(max_dist) return answer Programmers 2022.12.22
[Programmers / Python 풀이] 크기가 작은 부분 문자열 def solution(t, p): answer = 0 for i in range(len(t) - len(p) + 1): if int(p) >= int(t[i:i+len(p)]): answer += 1 return answer Programmers 2022.12.22