프로그래머스 69

[프로그래머스] LEVEL2 짝지어 제거하기, python3, 2017 팁스타운

def solution(s): if len(s) % 2: #홀수 경우는 불가능 return 0 list_s = list(s) stack = [] for i in range(len(s)): tmp = list_s.pop() if stack == []: stack.append(tmp) elif stack[-1] == tmp: stack.pop() elif stack[-1] != tmp: stack.append(tmp) if stack != []: return 0 return 1 위 코드는 타인의 코드를 보고 생각해보며 내 방식대로 적은 코드이다. 스택의 개념에 대해서는 알지만 어떻게 사용해야할지 잘 몰랐던 것 같다. 스택이 비었을때 추가하고, 스택에 값이 있을때 비교하는것... 앞으로는 제발 잊지 않았으면 ..

STUDY/Algorithm 2021.01.28

[프로그래머스] LEVEL2 스킬트리, python3, Summer/Winter Coding(~2018)

def solution(skill, skill_trees): answer = 0 for skill_tree in skill_trees: old_val = skill_tree.find(skill[0]) # 이전값과 비교하기 위한 변수. 처음 값은 skill의 첫 글자의 인덱스값 for sk in skill[1:]: val = skill_tree.find(sk) # val는 비교할 값의 인덱스 if old_val == -1: # 만약 old_val == -1 인 경우에는(스킬트리 내에 없음) if val != -1: # 다음값이 다 -1인 경우(스킬트리에 없는 경우)에만 진행 break # 하나의 값이 존재하면 불가능한 스킬트리 else: # old_val > -1 # 이전값이 스킬트리 내에 있고 if va..

STUDY/Algorithm 2021.01.28

[프로그래머스] LEVEL3 단어 변환, python3, 깊이/너비 우선 탐색(DFS/BFS)

def solution(begin, target, words): if not target in words: return 0 answer = 0 queue = [begin] while words!=[]: answer+=1 tmp=[] while queue: word_stack=queue.pop(0) for word in words: change=0 for i in range(len(word)): if word[i]==word_stack[i]: change+=1 if change==len(word)-1: tmp.append(word) words= list([word for word in words if word not in tmp]) #print("after:",tmp,words) if tmp==[] and..

STUDY/Algorithm 2020.01.17

[프로그래머스] LEVEL3 추석 트래픽, python3, 2018 KAKAO BLIND RECRUITMENT[1차]

def solution(lines): answer,len_lines,count = 0, 0 ,1 start,finish=[],[] for log in lines: len_lines+=1 #print("완료시간:",log[11:23],"처리시간:",log[23:-1],"s") tmp=float(log[11:13])*3600+float(log[14:16])*60+float(log[17:23]) finish.append(tmp) start.append(round(tmp-float(log[24:-1])+0.001,3)) # print("start:",start,"\nfinish:",finish) for i in range(len_lines): # 종료시간으로 오름차순 정렬이므로, 종료시간만 비교 # 한 로그의 ..

STUDY/Algorithm 2020.01.09

[프로그래머스] LEVEL3 서머코딩/윈터코딩(2019) 종이접기, python3

def solution(n): answer = [] for i in range(n): if answer!=[]: tmp=[] tmp_rvs=[] for j in answer[-1]: tmp.append(j) if j==1: tmp_rvs.append(0) elif j==0: tmp_rvs.append(1) tmp.append(0) tmp_rvs.reverse() for j in tmp_rvs: tmp.append(j) answer.append(tmp) else: answer.append([0]) return answer[-1] 이 규칙은 쉽게 생각했다. N+1번째 배열은 가운데 0을 기준으로(추가해주고) 왼쪽은 N번째 배열 오른쪽은 N번째 배열의 순서와 접은 방향을 반대로한 배열을 배치해주면 되었다. 이..

STUDY/Algorithm 2020.01.08