Python 48

[Python/프로그래머스]전화번호 목록_해시

https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 내가 만든 코드 : [효율성 테스트에서 실패] def solution(phone_book): phone_book.sort() while phone_book : tmp = phone_book.pop(0) for i in phone_book : if i.startswith(tmp): return False return True 이 코드를 만들고 돌렸을 때 sta..

[Python/프로그래머스]완주하지 못한 선수 _해시

https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 백준에도 동일한 문제가 있을것이다. 풀었던 기억이 있다. 근데 이번에는 못풀었다... 코드 : from collections import Counter def solution(participant, completion): answer=Counter(participant) - Counter(completion) return list(answer..

[Python/프로그래머스]입국심사 _이분탐색

https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 1. left와 right 값 정의 2. left와 right을 적절히 자르고 최적의 mid값을 찾도록 코드를 만든다. 코드 : def solution(n, times): answer = 0 left, right = 1, max(times) * n # right은 가장 오래걸리는 심사관에게 모두 받을 경우의 시간 while left = n : # 이미 해야할 사람..

[Python/프로그래머스]정수 삼각형 _DP

문제 : https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 코드 : def solution(triangle): answer = 0 for i in range(1, len(triangle)) : for j in range(len(triangle[i])) : if j == 0 : # 왼쪽 끝 원소 triangle[i][j] += triangle[i-1][j] elif j == len(triangle[i])-1 : # 오른쪽 끝의 원소 triangle[i][j] += triangle[i-1]..

[Python/프로그래머스]N으로 표현 _DP

https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr 코드 : def solution(N, number): answer = -1 dp = [] for i in range(1,9) : # N을 i번 사용 all_case = set() check_number = int(str(N)*i) #N 반복 (i 번 만큼) all_case.add(check_number) for j in range(0,i-1) : # dp에는 i-1만큼이 있음 for op1 in dp[j] : for op2 in dp[-j-1] : all_case.add(op1 - op2) all_case.add(op1 + op2) all_..

[Python/프로그래머스]가장 먼 노드_그래프(BFS)

https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 정말 사람의 기억력은 덧없다. 내가 BFS문제를 몇개를 풀었는데 몇달 안풀었다고 또 잊어버렸다. 어쩔수 없지 계속 푸는 수 밖에 !!!! 1. 그래프 정보 수집 2. 덱을 만들어 시작 노드(1) 을 삽입 3. 덱이 빌 때까지 빼면서 방문하지 않은 노드를 방문하여 vis +1 4. 가장 멀리 떨어진 노드 ( 가장 큰수)를 구해 count를 이용해 개수 return vis[1] = 1을 두고 덱에 1을 삽입해 놓는다. 그리고 1 주변을..

[Python/프로그래머스]H-Index_정렬

https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 문제를 보고 나혼자 풀수있을 것같았다. 처음 만든 코드 : (하나의 test case에서 틀림) def solution(citations): answer = 0 citations.sort(reverse=True) for i, v in enumerate(citations) : if (i +1)> v : return i return ..

[Python/프로그래머스]가장 큰 수_정렬

https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 쉬워보였다. 그러나 10과 4중 4를 먼저가도록 만들어야하는데 그 방법을 모르겠다. 그래서 답을 찾아봤다. 신박하게 문자열 *를 이용해 늘려서 비교한다. 큰 문자부터 써야하므로 reverse = True이다. 숫자를 문자로 바꾼 후 그 문자를 ASCII 값으로 치환되어 정렬한다. 숫자들이 str형태..

[Python/프로그래머스]k번째 수_정렬

https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 레벨 1이라 그런지 빠르게 혼자 풀었다. 내가 작성한 코드 : def solution(array, commands): answer = [] for com in commands : start = com[0] end = com[1] tmp_arr = array[start-1:end] tmp_arr.sort() answer.append(tmp_arr[com[2]-1]) return answer

[프로그래머스/PYHTON]이중우선순위 큐_힙(heap)

https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 풀이법 : 1. 띄어쓰기를 기준으로 나눈다. 2- 1. I 라면 Insert 2- 2. D라면 Delete 2-2-1 : 만약 아무것도 없다면 pass!! (pop할 숫자가 없으므로) 2-2-1 : 1 이라면 최댓값 pop ( nlargest 이용) 2-2-2 : 최솟값 pop 3. heap이 비었다면 [0,0]을 , 비어있지 않다면 max, min값을 answer에 넣는다. 코드 : import heapq def solution(operations): heap = [] # heap answer = [] for i in operations..