Programmers 60

[프로그래머스 / 파이썬 풀이] 햄버거 만들기

# 1,2,3,1 빵야채고기빵 def solution(ingredient): answer = 0 x = 0 while len(ingredient) >= 4: flag = 0 for i in range(x, len(ingredient)-3): if ingredient[i:i+4] == [1, 2, 3, 1]: answer += 1 del ingredient[i:i+4] x = i-3 flag = 1 break if flag == 0: break return answer 처음에는 탐색 구간 설정을 잘 못 해서 시간초과가 발생. while을 순회 하면서 탐색구간을 재 설정해주면 된다.

Programmers 2023.01.14

[프로그래머스 / 파이썬 풀이] 전력망을 둘로 나누기

from collections import deque def solution(n, wires): min = 10000000000 # 원본이 바뀌지 않도록 배열을 새로 복사를 해주고 pop(i)를 통해 줄을 하나씩 끊는다. for i in range(n-1): global visited wires2 = wires[::] graph = [[] for _ in range(n+1)] wires2.pop(i) visited = [0] * (n+1) for j in wires2: graph[j[0]].append(j[1]) graph[j[1]].append(j[0]) def dfs(i): global visited global cnt visited[i] = 1 for j in graph[i]: if visited[..

Programmers 2023.01.12

[프로그래머스 / 파이썬 풀이] 가장 큰 수

첫시도. from itertools import permutations def solution(numbers): answer = '' a = list(map(str, numbers)) b = permutations(a, len(numbers)) max_n = 0 for i in b: c = ''.join(i) if max_n < int(c): max_n = int(c) answer = str(max_n) return answer 테스트 케이스 몇개를 제외하곤 전부 시간초과가 나버린 케이스 (예상은 했지만 더 좋은 방법이 생각나지 않아 그냥 풀어봤다.) 다른 풀이(통과 코드) def solution(numbers): answer = '' num = list(map(str, numbers)) num.sort..

Programmers 2023.01.11

[프로그래머스 / 파이썬 풀이] 가장 먼 노드

from collections import deque def solution(n, edge): answer = 0 graph = [[] for _ in range(n+1)] visited = [0] * (n+1) q = deque() for i in edge: graph[i[0]].append(i[1]) graph[i[1]].append(i[0]) q.append(1) visited[1] = 1 while q: n = q.popleft() for j in graph[n]: if visited[j] == 0: visited[j] = visited[n] + 1 q.append(j) answer = visited.count(max(visited)) return answer 처음엔 dfs로 시도 했다가 실패. ..

Programmers 2023.01.10

[프로그래머스 / 파이썬 풀이] 네트워크

def solution(n, computers): global arr answer = 0 arr = [[] for _ in range(n)] visited = [0] * n for i in range(n): for j in range(n): if computers[i][j] != 0 and i != j: arr[i].append(j) def dfs(a): global arr for i in arr[a]: if visited[i] == 0: visited[i] = 1 dfs(i) for q in range(n): if visited[q] == 0: dfs(q) answer += 1 return answer 그래프를 활용한 dfs풀이. 우선 양방향 그래프와 컴퓨터 개수에 맞춰 방문 배열을 만들어 준 후 df..

Programmers 2023.01.09

[프로그래머스 / 파이썬 풀이] 모음사전

풀이 1 from itertools import product def solution(word): answer = 0 words = ['A', 'E', 'I', 'O', 'U'] ans_lst = [] for i in range(1, len(words) + 1): for j in product(words, repeat = i): ans_lst.append(''.join(list(j))) ans_lst.sort() answer = ans_lst.index(word) + 1 return answer itertools 모듈의 product 함수(중복순열)를 사용. 해당 된 모음들의 모든 순열을 구한 뒤 정렬하여 인덱스를 통해 위치를 찾아준다. 풀이 2 def solution(word): global answe..

Programmers 2023.01.06
LIST