본문 바로가기

파이썬39

[2021 카카오 블라인드] 합승 택시 요금 (파이썬) 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/72413 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 S에서 출발해서 a,b에 도착하는 최소한의 비용을 출력하는 문제 s->k->a , s->k->b 를 구해야함. 한 점을 지나쳐서 다른 점을 방문하는 것이므로 플로이드 와샬을 떠올릴 수 있음 n의 갯수도 200 이하 이므로 시간 복잡도 괜찮 하지만 나는 다익스트라 최단 경로를 이용해서 특정 점에서 a와 b에 도착하는 최단 경로를 구해줌(시간을 더 최적화 시켜줄려고) dikstr.. 2023. 4. 17.
[탐색] 여행 경로 (python) 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 BFS/DFS 중에서 BFS로 접근 경로가 여러개 일 경우 알파벳 순으로 사용하므로 ticket들 정렬 gr이라는 딕셔너리에 [출발 지역]:[tickets idx] 저장 큐에 현재 공항, 이용한 경로, 사용한 티켓 idx 를 담음 이용 경로의 갯수와 티켓+1 이 같으면 종료 (모두 사용한 거니까) 딕셔너리에서 키 값이 없는 것을 그냥 꺼내오면 에러가 나서 get으로 걸러내기 .. 2023. 4. 16.
[그리드] 섬 연결하기 (python) 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/42861 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 시작 노드가 주어지지 않는 채, 연결 정보들이 주어졌을 때의 모든 노드를 탐색 하는 최소 가중치(비용)를 구하는 문제 모든 노드를 탐색하면서 최소 가중치를 구하는 알고리즘을 짜야함. 이 때 크루스칼 알고리즘 떠올리는 짬이 있어야함 크루스칼은 주어진 정보들을 가중치를 기준으로 오름차순으로 정렬한 뒤, 하나하나 간선들을 이어나가는 과정 이 때, 특정 경로에서 하나의 왕복 루틴이 .. 2023. 4. 11.
[2020 카카오 인턴십] 스티커 모으기(2) 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 1칸 띄워서 계산하는 문제이므로 개수가 3개 이하라면 그 수들 중 가장 큰 수가 정답이 됨. a, b, c 일 땐 a와 c도 합체가 안되므로 dp [n]=max(s [n]+dp [n-2], dp [n], s [n]+dp [n-3] ) 경우의 수 첫 번째 수부터 계산(이 경우 마지막 숫자는 빼줘야 함) 두 번째 수부터 계산(이 경우 마지막 숫자도 더하기 가능) 세 번째 수부터 .. 2023. 4. 7.
[해시] 베스트 앨범 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 구해야 할 값은 각 장르의 총 합, 해당 장르에서의 최대 재생횟수 2개 추출 어떤 장르들이 있는지 알기 위해 장르 리스트를 집합화 시켜서 중복을 없애고 다시 리스트화 시켜줌(index 처리를 위해) 어떤 값이 최솟값이 될지 모르므로 "a"라는 장르는 -1 번 이라는 고정값을 넘겨주기 위해 gens와plays에 "a",-1 추가 g라는 리스트는 각 행에 [해당 장르 총 재생수,.. 2023. 4. 6.
[연습 문제] 숫자 게임 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/12987 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 b가 최대 승점을 얻었을 때의 경기를 출력하는게 아닌 승점만 출력하는 문제 a의 순서를 바꿔도 상관 x (b가 그것에 맞춰 경기하는 방식이 되기 때문) a와 b를 내림차순으로 정렬 idx 를 0 으로 잡은 후, a[idx]와 b[0]의 최대 값을 계속 비교 b[0]가 a[idx]보다 크다면 a[idx]보다 작은 값들은 모두 b[0]보다 큰 값이므로 이후 비교 의미x b[0]>.. 2023. 4. 5.
[그리디] 단속 카메라 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 routes에 대한 정렬을 진입,진출 중 어떤 것으로 할 지 선택해야함 진출로 잡아야 해당 차량이 이동하는 구간에서의 카메라 위치를 잡을 수 있음. 현재 차량의 진입 시점이 카메라보다 크다면 그 카메라는 지금의 차량을 잡을 수 없으므로 카메라를 하나 더 추가해야함 그 카메라의 위치는 현재 차량의 진입,진출을 모두 커버 가능해지므로 최대 범위인 진출로 일단 잡아둠. 3,4번 논.. 2023. 4. 3.
[DFS/BFS] 단어 변환 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 begin 에 담긴 단어를 알파벳 하나씩 바꿔가며 target에 담긴 단어로 변환하는 과정 규칙은 words 리스트에 담긴 단어들로만 변환 할 수 있음. 딕셔너리를 이용해서 풀 수도 있겠지만 그냥 인덱스로 계산해서 코드를 짬 begin이 변할 수 있는 것들도 찾기 위해 일단 words에 담음 words에 담긴 각각의 단어들에 대해 자신이 변할 수 있는 모든 경로를 찾아서 그래.. 2023. 3. 30.
[DFS/BFS] 네트워크 문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 연결된 노드들을 확인한 후 0번 노드부터 BFS 방식으로 탐색하면서 한번에 연결지을 수 있는 것들 모두 연결 0번 노드로부터의 탐색이 끝나면 1,2,3,4,5,...n-1번 노드 순서대로 탐색하는데 이미 탐색했던 거라면 continue 탐색하지 않았더라면 새로운 네트워크의 발견이므로 answer+1 소스 코드 from collections import deque def sol.. 2023. 3. 30.