전체 글 180

[정렬] (프로그래머스_172927) 광물캐기 (☆☆)

📌 링크: https://school.programmers.co.kr/learn/courses/30/lessons/172927 📌 틀린이유:✅ 최적의 순서를 알 수 없다고 생각해서 완전 탐색인 permutation을 썼는데 시간초과가 났다.=> 광물들을 5개씩 묶고 피로도가 높은 순서로 정렬한 다음 다이아몬드,철,돌 순서로 곡괭이를 소모하면 되는 문제였다.✅ 광물 배열을 곡괭이로 캘수 있는 정도까지만 잘라줘야한다. => 안해줘서 피로도 순서가 꼬였고 그래서 최적이 안되게 되버렸다. 📌 알고리즘1️⃣ 광물을 전체 곡괭이 개수*5만큼으로 잘라준다.(캘 수 있는 만큼)def solution(picks, minerals): s_p = sum(picks) num = s_p * 5 if len..

[스택] (프로그래머스_176962) 과제 진행하기 (☆☆☆)

📌 링크: https://school.programmers.co.kr/learn/courses/30/lessons/176962 📌 총평: 구현이 좀 까다로운 조건들이 있어서 어려웠다. 우선 gap을 이용해서 추가적으로 stack안에 있는 과제들을 진행할 수 있는지를 구현하는게 주 아이디어였다. 그리고 이후에 i,i+1을 이용해 gap을 구했기때문에 맨마지막 plans[-1]을 답에 넣어줘야했다. 마지막에 stack에 남아있는 것들을 거꾸로 꺼내서 답에 넣어야한다는 것도 바로 떠올리기 어려웠다. 📌 문제 이해:과제를 받은 루는 다음과 같은 순서대로 과제를 하려고 계획을 세웠습니다.과제는 시작하기로 한 시각이 되면 시작합니다. (우선적으로 과제를 시간 순 정렬 해야함)새로운 과제를 시작할 시각이 되었을..

[투포인터] (프로그래머스_178870) 연속된 부분 수열의 합

📌 링크: https://school.programmers.co.kr/learn/courses/30/lessons/178870 📌 틀렸던 이유:✅ 초기화 부분을 start,end=0,0으로해야하는데 start(합의 조건이 무조건 두개이상의 원소는 아님)✅ sum_value를 먼저 정해주고 while을 돌려야 정확하게 조건에서 걸리는데 while문 이후에 정해줘서 로직이 꼬였음 📌 알고리즘:1️⃣  start_idx, end_idx, sum_value=0,0,0으로 초기화해준다.마지막에 가장 길이가 짧은 수열의 처음,시작 인덱스를 반환해야하므로 힙을 활용한다.from heapq import heappop,heappushdef solution(sequence, k): start_idx,end_id..

[투포인터] (이론+문제) 특정한 합을 가지는 부분 연속 수열 찾기

📌 투포인터 알고리즘이란?리스트에 순차적으로 접근해야할때 2개의 점의 위치를 기록하면서 처리하는 알고리즘 📌 어떤 경우 쓰일까?ex) 특정한 합을 가지는 부분 연속 수열 찾기 (대표적) 📌 알고리즘1️⃣ 시작점(start)과 끝점(end)이 첫번째 원소 인덱스(0)를 가르키도록함2️⃣  while 현재 부분합이 M보다 작으면 end를 증가시킴 (부분합이 M보다 같거나 크기 전까지)3️⃣ 부분합이 M이랑 같으면 카운트함4️⃣ 부분합에서 시작점(start)의 원소를 제거  5️⃣ 시작점(start) 인덱스를 1증가 2️⃣~5️⃣  반복 📌 기본 코드n = 5 #데이터 개수 Nm = 5 #찾고자 하는 부분합 Mdata = [1,2,3,2,5]count = 0end = 0interval_sum = 0fo..

[다익스트라] (코드트리) 코드트리 투어

📌  헤맨 점1️⃣  자기 자신으로 가는 간선이 있어도 최단 거리는 0이다.(해당 경로가 있을 경우 그 가중치를 초기값으로 설정해서 헤맴)2️⃣ 500 명령이 주어질때 단순히 출발점만 변경되는 것이 아니라 큐에 있는 모든 아이템의 cost가 출발지점이 변경되었을때로 변경된다.(출발점만 변경했음 문제를 제대로 읽고 정리해야하는 필요성을 느낌) 3️⃣ ❤️‍🔥제일 중요❤️‍🔥 힙에서 특정원소를 삭제할때는 원소의 인덱스를 set으로 별도로 저장하고 set에서만 삭제한다음 힙에서는 while heap and heap[0][1] not in set(): heappop(heap) 으로 처리한다. 즉, 있는 id가 처음이 될때까지 이전에 삭제된 id를 빼주는거다.이렇게 바로 삭제하는게 아니라 필요할때 삭제해서 ..

[시뮬레이션+DFS] (코드트리) 고대 문명 유적 탐사

✅ 풀이시간: 3시간 (14:37~17:36) ✅ 헤맨 부분: 1️⃣ 함수 return 문제:return값을 안적어줘서 TypeError: 'NoneType' object is not subscriptable (key 0) 에러가 떴음return을 rotate된 격자로 해야하는데 입력값을 해서 회전이 안되었음 2️⃣ 마지막에 최종 그래프를 그래프로 변환 안해줘서 (graph = f_test_graph를 안해서) 벽에 있는 유적이 없는데 자꾸 popleft()한다고 에러뜸   3️⃣ 회전할때 -90도로 잘못 회전했음 90도 코드는  rotate[j][len(data)-1-i] = data[i][j] *j는 깨끗하다로 외우자-90도 코드는  rotate[len(data)-1-j][i] = data[i][j]..