프로그래머스38 [알고리즘] 프로그래머스 | 짝지어 제거하기 (페어) 짝지어 제거하기 답: 더보기 def solution(s): stack = [] for i in s: print(stack) if not stack: stack.append(i) elif stack[-1] != i: stack.append(i) else: #stack[-1] == i인 경우 stack.pop() return 0 if stack else 1 문제 분석 및 해석 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다 이 과정을 반복해 문자열을 모두 제거한다면 1, 아닐 경우 0을 리턴 >> 풀이생각 짝지어 제거하기에서 올바른괄호가 생각났다 stack을 사용해서 푸는 문제구나! >> 페어 풀이 지도 받음 스택에 없으면 스택에 추가(신병 받아라~.. 2023. 8. 31. [알고리즘] 프로그래머스 | 신고 결과 받기 신고 결과 받기 답: 더보기 def solution(id_list, report, k): result = {} reported_log = {} stop = [] answer = [0] * len(id_list) # 중복값 삭제 및 정렬 report = sorted(list(set(report))) # result 신고횟수 셀 dict생성 for i in id_list: result[i] = 0 # reported_log 신고한 유저 key, 신고당한 user는 value list로 추가 for r in report: user_id, reported_id = r.split(" ") # print(user_id, reported_id) if not user_id in reported_log: reported.. 2023. 8. 26. [알고리즘] 프로그래머스 | JadenCase 문자열 만들기 JadenCase 문자열 만들기 답: 더보기 def solution(s): new_list = [] s_list = s.split(" ") for st in s_list: if st == " ": new_list.append(" ") else: new_list.append(st[:1].upper() + st[1:].lower()) #st[0]으로 하면 오류가 남.. new_s = " ".join(new_list) return new_s 리팩토링 - st[0]-> st[:1]로 바꾸면서 if문이 필요없어졌음 def solution(s): new_list = [] s_list = s.split(" ") for st in s_list: new_list.append(st[:1].upper() + st[1:].l.. 2023. 8. 25. [알고리즘] 프로그래머스 | 숫자의 표현 숫자의 표현 답: 더보기 def solution(n): count = 1 for number in range(1, n // 2 + 2): result = 0 for num in range(number, n): result += num if result == n: count += 1 break elif result > n: break return count 문제 분석 및 해석 자연수 n이 주어질 때, 연속하는 수를 더해 n이 나오는 가짓수 구하기 ex) n = 15 1 + 2 + 3 + 4 + 5 = 15 4 + 5 + 6 = 15 7 + 8 = 15 15 = 15 >> 풀이생각 일단 자기 자신 count + 1 1 ~ n-1까지.. 1로 시작해 2~ 차례로 더하도록 하기 : for문? 1부터 배열? 혹은.. 2023. 8. 24. 이전 1 2 3 4 5 6 ··· 10 다음