[프로그래머스] 네트워크 Python
·
개발💻/알고리즘
이제 슬슬 레벨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..
[프로그래머스] 카펫 Python
·
개발💻/알고리즘
문제의 카테고리는 완전탐색이라고 나와있는데 뭔가 이정도는 방정식으로 풀 수 있을거 같아서 방정식으로 풀었다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 안쪽 가로를 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..
[프로그래머스] 기능개발 Python
·
개발💻/알고리즘
문제 유형은 스택 큐라고 돼있는데 나는 그냥 내 생각대로 풀었따 ㅎ... 계속 답이 안나와서 좀 답답함이 있었지만 그래도 검색 안하고 직접 풀어서 해결했다!! 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..
[프로그래머스] 피보나치 수 Python
·
개발💻/알고리즘
피보나치 수... 알고리즘 시작한 사람이라면 한번은 무조건 봤을 문제 당연하다시피 재귀로 처음에 풀었는데 시간초과가 났다 그래서 재귀로 풀지않고 반복문을 통해서 풀었다 그리고 문제에서 값을 1234567 로 나눈 수를 리턴하라고 나와있다 문제를 끝까지 잘 읽을것!! def solution(n): answer = 0 prev = 0 current = 1 next = 0 for _ in range(2, n+1): next = prev + current prev = current current = next answer = current % 1234567 return answer 계속 화이팅!!
[프로그래머스] 타겟 넘버 Python
·
개발💻/알고리즘
이제 슬슬 레벨2를 풀어볼 생각이다 DFS BFS 알고리즘 한창 할때는 진짜 잘했었는데 ㅠㅠㅠ 이젠 감도 잘 안잡힌다 그래도 힌트 하나도 안 얻고 스스로 재귀함수를 이용해서 해결했다!! 근데 여기서 answer쪽에서 에러가 났는데 전역변수가 아니라서 에러가 나서 global로 해줬는데 그것도 에러가 나서 찾아보니 아마 프로그래머스에서는 문제 풀이 자체가 함수로 정의되어있어서 global해도 에러가 나는거 같다 그때는 nonlocal을 쓰면 된다고 한다!! def solution(numbers, target): answer = 0 def plusOrminus(count, sum): nonlocal answer if count != len(numbers): plusOrminus(count+1, sum+num..