분류 전체보기 665

[프로그래머스] LEVEL3 자물쇠와 열쇠, python3, 2020 KAKAO BLIND RECRUITMENT

처음에 생각했던 알고리즘은 lock의 홈부분이 key의 부분집합인지 확인하는 것이었다. 하지만 부분집합이어도 성립하지 않는것들을 찾았기 때문에 더이상 진전이 없었다. 물론 처음부터 끝까지 key을 돌려가며 모든 경우를 확인하는 완전탐색의 방법도 생각했으나 그것보다 더 좋은 생각이 없을까 하는 생각에 구현하지는 않았다. 하지만 다른사람의 알고리즘을 보니 대부분 모든 배열을 확인하는 방식으로 하였다. 뛰어난 알고리즘도 좋지만 코딩테스트에는 답을 구현하는게 더 중요한듯하다. 첫번째로 수행한것은 key를 회전시키는 함수의 구현이었다. def rot(key,M): #1 key[i][j]=key[j][i] tmp=[] for i in range(M): tmp_row=[] for j in range(M): tmp_r..

STUDY/Algorithm 2020.01.15

[프로그래머스] 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

[프로그래머스] LEVEL2 타겟 넘버, python3, 깊이/너비 우선 탐색(DFS/BFS)

def solution(numbers, target): answer_list=[0] for i in numbers: temporary_list=[] #print("\nanswer_list:",answer_list) for j in answer_list: temporary_list.append(j+i) temporary_list.append(j-i) #print("tmp_list",temporary_list) answer_list=temporary_list #print("answer_list",answer_list) answer = answer_list.count(target) return answer 방법은 똑같았으나 구현하지 못해 내 코드는 아니지만 올린다.

STUDY/Algorithm 2019.11.20