파이썬 145

[Python/프로그래머스]모의고사_완탐

https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 코드 : def solution(answers): answer = [] supo1 = [1,2,3,4,5] supo2 = [2,1,2,3,2,4,2,5] supo3 = [3,3,1,1,2,2,4,4,5,5] cnt = [0,0,0] for i in range(len(answers)) : if answers[i] == supo1[i%5] : cnt[0] +=1 i..

[Python/프로그래머스]단속 카메라_Greedy(그리디)

https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 1. 빨리 끝나는 순으로 정렬한다. 2. 카메라를 가장 처음에 둔다. 3. 구간 시작보다 카메라가 이전에 있다면 3-1. 끝나는 곳에 카메라를 설치한다. 코드 : def solution(routes): answer = 0 routes.sort(key = lambda x : x[1]) # 빨리 끝나는 순으로 정렬 camera = -30001 for route in routes : if camera < route[0] : # 시작위치보다 전에 카메라가 있다면 answe..

[Python/프로그래머스]섬 연결하기_Greedy(그리디)

https://programmers.co.kr/learn/courses/30/lessons/42861 코딩테스트 연습 - 섬 연결하기 4 [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]] 4 programmers.co.kr Kruskal 알고리즘을 이용해 풀이하였다. 1. 비용이 작은 순으로 정렬한다. 2. connect set을 만들어 연결 여부를 확인한다. 3. while문을 통해 전부 연결될 때까지 돌린다. 3-1. cost에 이미 있으면 continue 3-2. cost에 없으면 connect 에 넣고 비용을 더한다. 4. 비용 반환 코드 : def solution(n, costs): answer = 0 costs.sort(key = lambda x : x[2]) # 비용..

[Python/프로그래머스]구명보트_Greedy(그리디)

https://programmers.co.kr/learn/courses/30/lessons/42885 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 인덱스를 이용해서 풀이한다. 직접 pop해서 풀면 효율성에서 실패한다고 한다. 코드 : def solution(people, limit): answer = 0 people.sort() i ,j = 0, len(people)-1 # i : 가장 마른 사람, j : 가장 뚱뚱한 사람 while i

[Python/프로그래머스]큰 수 만들기__Greedy(그리디)

https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr while (최근에 넣은 수 보다 지금 넣는 수가 더 크다면 ): pop을 해준다. 그게 현재 가장 최적의 값이니까!! 코드 : def solution(number, k): answer = [] for num in number : while k > 0 and answer and answer[-1] < num : answer.pop() k -= 1 answer.append(num) return ''.join(answer[:len(answer)-k]) 문제를 풀고 든 생각 : 왜 반환할 때 [:len(answer)-k]일까? 그냥 [:-k] ..

[Python/프로그래머스] 등굣길_DP

https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 문제 설명 : 왼쪽 그림과 같이 진행된다. (1,1)에서 시작하여 우측, 아래로 이동한다. 경로의 개수를 반환하는 것으로 왼쪽과 위의 합을 새로운 값으로 지정한다. 중간에 웅덩이는 무시하고 넘어간다. 도착 위치의 값을 반환하면 된다. 코드 : def solution(m, n, puddles): answer = 0 # puddle 이 (m,n)으로 주어..

[Python/프로그래머스]카펫_완전탐색

https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 programmers.co.kr (가로 - 2) * (세로 - 2) = yellow 라는 것을 그림을 그려서 생각해보면 알 수 있다. 코드 : def solution(brown, yellow): s = brown + yellow for i in range(s,2,-1) : # s에서 2 이전까지 -1씩 감소시키며 i를 구한다. if s%i == 0: # i 가 가로일 수 있다. a = s ..

[Python/프로그래머스]여행경로_DFS_(🐶삽질_깊은복사,얕은복사)

https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "ATL", "SFO"] programmers.co.kr 코드 : from collections import defaultdict def solution(tickets): answer = [] n = len(tickets) def init_graph() : routes = defaultdict(list) # 디포트값이 list인 딕셔너리 for key, value in tickets ..

[Python/프로그래머스]단어변환_BFS

https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 1. 초기 큐에는 시작 단어와 변환한 횟수가 들어간다. 2. 하나씩 pop하면서 만약 target일 경우 cnt를 반환 3. target이 아니라면 방문하지 않은 words를 돌면서 한글자만 다른 단어를 찾는다. 4. 이것을 큐에 넣고 방문했음을 표시한다. 코드 : from collections import deque ..

[Python/프로그래머스]네트워크_(DFS,유니온파인드)

https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 문제 설명 : 문제를 보고 computers의 배열 설명이 잘 이해가 가지않았는데 몇번 읽어보고 이해했다. computers = [[1, 1, 0], [1, 1, 0], [0, 0, 1]] 이렇게 computers가 있을 때 다음 그림과 같이 생각하면 된다. 1행 1열, 2행 2열, 3행 3열은 당연히 1이다. 자기자신과 자기 자신이기 때문이다. 그 이외에..