목록알고리즘/SWEA (72)
여름의 서재
📕 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7I5fgqEogDFAXB SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 풀이법 1. 거쳤던 칸을 다시 거쳐도 되기 때문에 방문처리가 필요없는 dfs 문제이다. 2. 만들 수 있는 서로 다른 수들을 담을 answers 리스트를 만든다. 3. dfs의 인자로 지금까지의 숫자 개수를 가지고 다니면서 개수가 7이 될때, answers 리스트 안에 없는 숫자라면 answers안에 담는다. 4. answer의 길이를 출력한다. dxy = [(1,0), (0,1), (..
📕 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWMeRLz6kC0DFAXd SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 풀이법 1. 이진수를 돌면서 0을 1로, 1을 0으로 모두 바꿔보면서 원래 숫자가 될 수 있는 경우의 수를 originals 리스트에 담는다. 2. 그다음 삼진수를 돌며 0일땐 1,2로 1일땐 0,2로 2일땐 0,1로 바꿔보면서 바꾼 숫자가 originals에 있는지 확인하고 있으면 그 값을 return한다. def bank(jinsu2, jinsu3): originals = [] fo..
📕 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LuHfqDz8DFAXc&categoryId=AV5LuHfqDz8DFAXc&categoryType=CODE&problemTitle=1865&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 풀이법 1. dfs의 n은 현재 행의 번호이고, items는 현재까지 담당이 지정된 일들의 열값이 담긴 리스트이고, total은 현..
📕 문제 https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 풀이법 1. dfs의 n은 현재 행이고, items는 현재까지 생산한 제품의 열이 담길 리스트이고, total은 현재까지의 비용이 담긴다. 2. 한 행씩 내려가면서 각 행에서 생산할 제품을 고른다. 3. 모든 열을 돌면서 만약 그 열이 지금까지 생산한 제품의 열이 아니라면 items에 열을 넣고 재귀를 실행한다. 실행한 이후에는 다시 items에서 넣었던 열을 빼줘야 한다. 4. 만약 진행하다가 현재까지의 비용이 ans를 넘으면..
📕 문제 https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 풀이법 1. dfs의 n은 현재 버스가 도착한 정류장이고 c는 충전한 횟수가 된다. 2. 첫번째 정류장은 충전한 횟수에 포함되지 않기 때문에 dfs 바깥쪽에서 for문을 돌려줬다. 3. 버스가 정류장에 도착해서 충전을 했을 때 갈수 있는 곳까지 for문을 돌면서 모두 dfs를 돌려준다. (이때, 충전 횟수는 +1이 된다) 4. 만약 가는 중에 ans보다 충전횟수가 같거나 많다면 return한다(가지치기) 5. 도착지에 도착했다면..
📕 문제 https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 풀이법 : 일반적인 이진 탐색에 조금 이상한 특징을 넣어놓은 문제였다. 뭔가 문제 설명이 친절하지 않았고 굳이..? 싶었다 * 가능한 경우 1. 바로 찾는 경우 2. 오른쪽 한번 가고 바로 찾는 경우, 왼쪽 한번 가고 바로 찾는 경우 3. 오왼오왼 번갈아가면서 보다가 찾는 경우 즉, 오오나 왼왼이 나오면 바로 그 경우는 걸러야한다. 그래서 오른쪽 갔다가 오른쪽 한번 더 가면 바로 break를 걸어줘야 한다. (왼쪽의 경우도 동일..
📕 문제 https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 풀이법 : 일반적인 퀵정렬 코드 중 최대한 append와 재귀가 깊게 들어가지 않는 코드를 짜야 통과가 됐다. def quick_sort(arr, start, end): if start >= end: return pivot = start left = start + 1 right = end while left right: arr[right], arr[pivot] = arr[pivot], arr[right] else: arr[lef..
📕 문제 https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 💡 풀이법 : 일반적인 merge sort 코드에 # 요 부분 만 추가해주면 되는 문제였다. (단, len, append는 최대한 쓰지 않도록 코드를 짜야 시간초과가 나지 않는 문제였다.) def merge(left, right): global cnt len_left = len(left) len_right = len(right) left_i = right_i = i = 0 result = [0] * (len_left + len_ri..