알고리즘 166

[Python/프로그래머스]합승택시요금_플로이드와샬

https://school.programmers.co.kr/learn/courses/30/lessons/72413 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221022 플로이드 와샬 백준 문제 풀이 : https://what-am-i.tistory.com/425 [Python/BOJ] 백준11404 플로이드_플로이드와샬 https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보..

[Python/BOJ] 백준11404 플로이드_플로이드와샬

https://www.acmicpc.net/problem/11404 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 이전에 했던 다익스트라는 한 노드에서 모든 노드로의 정점을 찾는 방법이었다. 이와 비슷한 플로이드 와샬은 모든 노드에서 모든 노드로의 최단 경로를 찾는 알고리즘이다. 2차원 테이블에 dp를 이용해 최단거리 정보를 저장하며 구한다. 시간복잡도는 O(n^3)로 오래걸린다. 삼중 for문을 사용하기 때문이다. 노드나 간선의 개수가 많으면 플로이드 와샬이 아닌 다익스트라를 고려해보시라 아무래도 dp이기 ..

[Python/프로그래머스][1차]캐시_구현

https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr cacheSize가 있는지 없는지에 따라 2가지로 구분해서 코드를 만들어야한다. 그리고 대소문자 구분이 없으므로 city.lower()를 통해서 모든 문자를 소문자로 만들어 비교한다. 코드 : def solution(cacheSize, cities): time = 0 stack = [] for c in cities : c= c.lower() if cacheSize : if c in stack : ..

[Python/프로그래머스]괄호 변환_구현

https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제도 잘 이해가 안됐고 어떻게 구현할지 감도 잘안왔다...😓 이번에 풀고 익혀야지!! 코드 : # u,v로 나누기 def divide(p) : open_p = 0 close_p = 0 for i in range(len(p)) : if p[i] == '(' : open_p+=1 else : close_p +=1 # 같아지는 순간 # u는 균형잡힌 괄호 문자열 if open_p == close_p ..

[Python/프로그래머스]프렌즈4블록_구현

https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 2022-10-21 문제를 보고 생각난 풀이 : 모든 영역을 돌면서 해당 블록을 기준으로 우,하,아래우측 대각선 블록이 동일한 블록을 찾는다. 모든 영역을 돌면서 찾은 다음에 모은 블럭들을 비었다는 표시를 해준다. 그 후 비었다는 표시를 이용해 위에서 아래로 값들을 내린다. 이것을 계속 반복하면서 동일한 블록이 없을 때까지 찾는다. 반복이 멈추면 다시 돌면서 빈 블록의 개수를 세서 반환하면 된..

[Python/프로그래머스]두 큐 합 같게 만들기_[구현]

🐾 20221202 🐾 20221205 https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 쉬워보임..! 풀긴 풀었는데 정확도가 100이 안나왔다 틀린코드 : from collections import deque def solution(queue1, queue2): answer = 0 q1,q2 = deque(queue1),deque(queue2) Sum1 = sum(q1) Sum2 = sum(q2) S = Sum1 + Sum2 l1, l2 = ..

[Python/BOJ] 백준2212 센서_그리디

https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net 5번을 읽었는데 문제가 잘 이해가 안되서 답을 찾아봤다.😂 그냥 쉽게 말하면 n개의 센서를 k개의 구간으로 나누기 더만!! 내가 독해력이 떨어지나....ㅋㅋㅋ 정렬을 이용하여 그리디 방식으로 풀이하였다. - 만약 집중국의 개수가 센서보다 크거나 같다면 0이다. 1) 센서들을 순서대로 만든다.(오름차순 정렬) 2) 센서들..

[Python/프로그래머스]거리두기 확인하기_[BFS]

https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221022 - 이번엔 혼자 못품.. 으아아아 혼자 풀었다!!!! 생각한 방법 : 매번 p가 나올 때 마다 bfs를 돌려서 2 이내에 다른 p가 발견되면 answer에 0을 넣자. 코드 : from collections import deque import copy dx = [0,1,0,-1] dy = [1,0,-1,0] def bfs(q,vis,tmp) : isTrue = 1 while q..

[Python/프로그래머스]주차요금계산_[구현]

https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221022 - 혼자 품!! 코드 : def solution(fees, records): cost = {} dic = {} for i in records : i = i.split() if i[1] in dic : dic[i[1]].append(i[0]) else : dic[i[1]] = [i[0]] cost[i[1]] = 0 for key, i in dic.items() : time = 0..

[Python/프로그래머스]경주로 건설_[BFS]

https://school.programmers.co.kr/learn/courses/30/lessons/67259 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🐾 20221022 from collections import deque dx = [0,1,0,-1] dy = [1,0,-1,0] def solution(board): n = len(board) def bfs(x,y,cost,dir) : vis = [[0]*n for _ in range(n)] vis[0][0] = 1 q = deque([[x,y,cost,dir]]) while q : x,y,co..