전체 글355 전력망을 둘로 나누기 - 파이썬(python) BFS 에 익숙치 않아 많은 시간이 소요된 문제... 아래 영상이 기본 개념 숙지에 많은 도움이 되었다. 나의 풀이 from collections import deque def bfs(start, visited, graph) : cnt = 1 visited[start] = True queue = deque([start]) while queue : v = queue.popleft() for i in graph[v] : if not visited[i] : queue.append(i) visited[i] = True cnt += 1 return cnt def solution(n, wires): graph = [[] for _ in range(n+1)] count = [] for a,b in wires : gr.. 알고리즘/완전탐색 2022. 9. 7. [프로그래머스] 피로도 - 파이썬(python) 문제 설명 XX게임에는 피로도 시스템(0 이상의 정수로 표현합니다)이 있으며, 일정 피로도를 사용해서 던전을 탐험할 수 있습니다. 이때, 각 던전마다 탐험을 시작하기 위해 필요한 "최소 필요 피로도"와 던전 탐험을 마쳤을 때 소모되는 "소모 피로도"가 있습니다. "최소 필요 피로도"는 해당 던전을 탐험하기 위해 가지고 있어야 하는 최소한의 피로도를 나타내며, "소모 피로도"는 던전을 탐험한 후 소모되는 피로도를 나타냅니다. 예를 들어 "최소 필요 피로도"가 80, "소모 피로도"가 20인 던전을 탐험하기 위해서는 유저의 현재 남은 피로도는 80 이상 이어야 하며, 던전을 탐험한 후에는 피로도 20이 소모됩니다. 이 게임에는 하루에 한 번씩 탐험할 수 있는 던전이 여러개 있는데, 한 유저가 오늘 이 던전들.. 알고리즘/완전탐색 2022. 9. 7. [프로그래머스] 카펫 - 파이썬(python) Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다. 입.. 카테고리 없음 2022. 9. 7. [프로그래머스] 소수 찾기 - 파이썬(python) 나의 풀이 from itertools import permutations def solution(numbers): answer = [] s = [] for i in range(1,len(numbers)+1): s += (list(map(''.join, permutations(numbers, i)))) s = list(map(int, s)) s = list(set(s)) print(s) for i in s : if i < 2 : continue elif i == 2 : answer.append(i) continue for j in range(2, int(i**0.5) + 1) : if int(i) % j == 0 : break elif j == int(i**0.5) : answer.append(i) ret.. 알고리즘/완전탐색 2022. 9. 7. [프로그래머스] 모의고사 - 파이썬(python) 나의 풀이 def solution(answers): answer = [] count = len(answers) one = ([1,2,3,4,5] * (count//5 + 1))[:count] two = ([2,1,2,3,2,4,2,5] * (count//8 + 1))[:count] three = ([3, 3, 1, 1, 2, 2, 4, 4, 5, 5] * (count//10 + 1))[:count] score = [0,0,0] print(one, two, three) for i in range(count) : if answers[i] == one[i] : score[0] += 1 if answers[i] == two[i] : score[1] += 1 if answers[i] == three[i] : sc.. 알고리즘/완전탐색 2022. 9. 6. [프로그래머스] 최소직사각형 - 파이썬(python) 나의 풀이 def solution(sizes): for i in sizes : if i[0] < i[1] : tmp = i[1] i[1] = i[0] i[0] = tmp max_width = max(sizes)[0] max_height = max(sizes, key=lambda x:x[1])[1] return max_width * max_height 가로, 세로 길이 중 더 큰 값을 가로가 되도록 변경한다. 그런다음 가로 중에 가장 큰 값, 세로 중에 가장 큰 값을 곱한 값이 사이즈가 되도록 리턴한다. 다른 풀이 def solution(sizes): return max(max(x) for x in sizes) * max(min(x) for x in sizes) 가로, 세로 중에 큰 값을 고르고, 그 중 .. 알고리즘/완전탐색 2022. 9. 6. [프로그래머스] 두 정수 사이의 합 - 파이썬(python) 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 제한 조건 a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. a와 b의 대소관계는 정해져있지 않습니다. 나의 풀이 def solution(a, b): if a==b : return a else : answer = 0 big, small = max(a,b), min(a,b) for i in range(small, big+1) : answer += i return answer 다른 풀이 def solution(a, b).. 알고리즘/이것저것 2022. 9. 6. [프로그래머스] 문자열 내 마음대로 정렬하기 - 파이썬(python) 나의 풀이 def solution(strings, n): return sorted(strings, key=lambda x:(x[n], x)) key = lambda x: (x[n], x) 1) n번째 인덱스를 기준으로 정렬하고 -> x[n] 2) 사전순으로 정렬한다. -> x 알고리즘/이것저것 2022. 9. 6. [프로그래머스] 문자열 내 p와 y의 개수 - 파이썬(python) 나의 풀이 def solution(s): p = 0 y = 0 p = s.count('p') + s.count('P') y = s.count('y') + s.count('Y') return p==y count 함수를 사용했다. count() 함수는 문자열에서 사용되는 함수로써, 문자열 내부에서 특정 문자, 또는 문자열이 포함되어 있는지를 count 하여 반환하는 함수이다. 대소문자를 구별하여, 카운팅 하는 범위 또한 지정이 가능하다. count("검색할 것", start, end) 다른 풀이 def numPY(s): # 함수를 완성하세요 return s.lower().count('p') == s.lower().count('y') 대소문자를 가리지 않고 p와 y의 개수를 찾는 것이므로, lower() 로 .. 알고리즘/이것저것 2022. 9. 6. [프로그래머스] 문자열 내림차순으로 배치하기 - 파이썬(python) 나의 풀이 def solution(s): return ''.join(sorted([i for i in s], reverse=True)) 문자열은 아스키코드 숫자에 따라 정렬된다! 따라서 해당 문자열을 리스트에 담고, 역순으로 정렬한 것을 다시 문자열로 바꾸면 끝. * sorted 는 문자열을 리스트로 변환하고 정렬한다고 한다... 굳이 [i for i in s] 를 쓰지 않아도 됨!! 알고리즘/이것저것 2022. 9. 6. [프로그래머스] H-Index - 파이썬(python) 문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다. 논문별 인용 횟수는 0회 이상 10,000회 이하입니다. citations return [3.. 알고리즘/Sort 정렬 2022. 9. 6. [프로그래머스] 가장 큰 수 - 파이썬(python) 나의 풀이 def solution(numbers): answer = '' for i in sorted([str(i) for i in numbers], key=lambda x:x*3, reverse=True) : answer += i return "0" if answer[0] == '0' else answer 아래와 같은 정렬이 주어졌을 때, 34-> 3 -> 30순으로 정렬이 되어야 한다. 그렇지만 원래의 문자열 정렬에서는 34 -> 30 -> 3의 순서로 정렬이 되곤 한다. [3, 30, 34, 5, 9] "9534330" 따라서 numbers의 각 원소들을 문자열로 변경한 후에, key를 x*3 으로 하여 sorted 로 정렬하였다. x*3을 한 이유는, 343434, 333 , 303030 이 되었.. 알고리즘/Sort 정렬 2022. 9. 6. 이전 1 ··· 9 10 11 12 13 14 15 ··· 30 다음