개발💻/알고리즘

나름 평범한? dfs bfs 문제인거같은데 고민이 된게 방문한 단어를 기록하는 visited를 함수를 돌면서 들고다녀야 하나 그냥 함수 밖에 두고 사용해도 되나였다 함수 밖에두고 실행했더니 무한 재귀에 걸려 에러가 났다.. 그래서 결론은 visited도 들고 다녀야한다!! def solution(begin, target, words): answer = 0 answers = [] def search(count, keyword, visited): if keyword == target: answers.append(count) return for word in words: if word not in visited: diff_count = 0 for i in range(len(begin)): if keyword[..
그냥 내림차순 오름차순은 간단히 sort를 쓰면 되는거같은데 만약에 리스트가 [[a,2],[b,8],[c,1]] 이런식으로 있을때 특정 인덱스의 값으로 정렬하려면 어떻게해야할가?? sorted_arr = sorted(arr, key=lambda x: (x[1]) 요런식으로 하면 인덱스 1번째 값을 기준으로 정렬이 된다 위에 예시에서는 숫자가 작은순으로 될것이다 근데 첫번째 인덱스 값으로 정렬하고 만약 값이 같으면 0번째 인덱스 값으로 정렬하려면? sorted_arr = sorted(arr, key=lambda x: (x[1],x[0]) 이런식으로 하면 된다고 한다 아무튼 나는 이 문제를 만나서 거의 모든 정보를 넣은 배열을 만들고 적절하게 정렬하여 문제를 해결했다 (변수 이름 정하는게 젤 어려움.. ㅋㅋ..
이제 슬슬 레벨3를 도전해보려 한다 진짜 가장 기초적인 dfs/bfs 문제이지만 거의 한시간이 넘게 걸렸다 가히 인간승리라고 할 수 있겠다 정확하진 않지만 아마 나는 dfs로 푼것같다 연결된 것들을 가장 깊숙한 곳까지 찾아 들어가는 로직을 작성했다 한 점에서 연결되어 있는 번호를 arr에 저장하고 방문한 점은 visited에 저장했다 def solution(n, computers): answer = 0 arr = [[] for i in range(n)] visited = [] def dfs(root, x): for j in range(n): if computers[x][j] == 1 and j not in visited: arr[root].append(j) visited.append(j) dfs(root..
문제의 카테고리는 완전탐색이라고 나와있는데 뭔가 이정도는 방정식으로 풀 수 있을거 같아서 방정식으로 풀었다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 안쪽 가로를 x 안쪽 세로를 y라 하고 브라운을 b 옐로우를 a라고 해보겠다 그럼 xy = a (x+2)(y+2) = b 라고 하고 x에 관해서 정리하면 x는 위와같이 정리할 수 있다 가로가 세로와 같거나 크다 했으므로 저기서 +와 - 중에 +를 선택해주고 정리하면 된다 편의상 (b/2 -2) 를 K 로 놓고 계산했다 그리고 x+2,y+2가 정답임을 잊지 않아야한다 def solution(brown, yellow): answer = [] k = brown/2 - 2 x = k + (k**2 - 4*yellow)**0.5 x= x/2 answer.append(x + 2) answ..
문제 유형은 스택 큐라고 돼있는데 나는 그냥 내 생각대로 풀었따 ㅎ... 계속 답이 안나와서 좀 답답함이 있었지만 그래도 검색 안하고 직접 풀어서 해결했다!! def solution(progresses, speeds): answer = [] subtotal = 0 for i in range(len(progresses)): if progresses[i] 0: answer.append(subtotal) subtotal = 0 while progresses[i] < 100: for j in range(i, len(progresses)): progresses[j] += speeds[j] subtotal+=1 else: subtotal+=1 if i == len(progres..
Moooo_
'개발💻/알고리즘' 카테고리의 글 목록