일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 두큐합같게만들기
- 다익스트라
- 사이클게임
- 알고리즘
- 최소스패닝트리
- 트리의지름
- DFS
- [1차]캐시
- javascript
- 그래프탐색
- BFS
- 최단경로
- 도넛과막대그래프
- 자물쇠와열쇠
- 17404
- 이모티콘할인행사
- 위상정렬
- 거리두기확인하기
- 징검다리건너기
- RGB거리2
- DP
- 구현
- 섬연결하기
- 프로그래머스
- 파이썬
- 백준
- 프림알고리즘
- 벽부수고이동하기
- 파괴되지않은건물
- 큐
- Today
- Total
목록알고리즘 (41)
블로그 이름 뭐로 하지
문제 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 풀이 그냥 정말 다익스트라 기초 문제. 2달 전에 풀었던 문제인데 메모리 초과, 시간초과, 맞았습니다... 라고 돼있어서 좀 걱정했는데 아니나다를까 이번 처음 풀이도 시간 초과가 떴다. ㅠㅠ 뭐가 문제인지 고민했는데 혹시나..하고 input을 sys로 고쳐줬더니 바로 정답. 아오 이럴 때마다 아주 킹이 받는다. 풀이 적을 것도 없이 일반 다익스트라 문제고..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 정말 그냥 문제에 나와있는대로 하면 된다. 1. 실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼냅니다. 2. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣습니다. 3. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행합니다. 3.1 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다. 큐니까 선입된(가장 ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 처음에 봤을 때 일반적인 구현은 금방 할 것 같았는데 -1를 출력하는 경우를 어떻게 판단할지가 고민이었다. 나는 각 큐의 길이가 300,000 이하이므로 600,000 번 이상 교환을 했는데도 두 큐의 합이 같지 않다면 합을 같게 만들 수 없다고 판단하고 -1을 리턴해주는 식으로 해줬다. 정답처리는 됐지만 이 숫자를 어떤 기준으로 잡아야하는지는 모르겠다... 다른 사람들을 어떻게 지정..

문제 https://www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 풀이 어쩌다보니 오늘은 다 최단경로 알고리즘 문제... ! 이거는 예전에 풀었던 문제고, 아까 다익스트라를 풀었어서 바로 풀었다. 처음엔 간선이 양방향인데 단방향으로만 추가해줘서 틀렸습니다가 떴고, 두 번째엔 1e9 부분에서 -1을 출력해줘야 하는데 그 부분에서 ==과 >= 처리를 잘못해서 틀렸습니다를 몇 번 겪고난 후에 ^ __ ^ 정답을 띄울 ..
문제 https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net 풀이 2달전 시도했다가 시간초과로 실패했던 문제였다. 당시 다익스트라 뽀개기를 했던걸로 기억하는데... 우선 오늘 다시 이 문제를 봤을 때는 플로이드 워셜이 떠올랐다. 그래서 플로이드로 풀었더니 시간 초과가 떴다. ㅎㅎ n,m,x = map(int,input().split()) graph = [[1e9] * (n+1) for _ in range(n+1)] for..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 그냥.. 무난한 ...큐 활용 구현 문제..? 라고 생각했다... 기능 개발하는데 필요한 일수를 구한 후에 배열 앞에서부터 적게 걸리는 일수를 다 더해서 answer에 넣어줬다. 그니까..엄... 만약 기능 개발에 필요한 날이 [7,2,3,10,3,2,1,9] 이런 식으로 나온다면, 7보다 작은수인 2,3까지 체크해서 3개, 10부터는 10,3,2,1 까지 체크해서 4개, 9는 1 이런..
문제 https://www.acmicpc.net/problem/1167 1167번: 트리의 지름 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2 ≤ V ≤ 100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. 정점 번호는 1부터 V까지 www.acmicpc.net 풀이 트리니까 그래프 문제라고 생각했고 각 정점간의 최단거리를 찾는 다익스트라 알고리즘을 활용해서 각 정점에서 가장 먼 지점을 찾고, 그 먼 지점들 중 가장 먼 지점을 찾는 식으로 풀이를 했다. 그치만.. 시간 초과가 나더라 ㅎ 시간초과 풀이 from collections import deque v = int(input()) answer = 0 graph = [[] for _..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17682 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 다트게임이 3회밖에 없다는것을 캐치했으면 금방 풀렸을텐데, 무한대로 가능하다고 생각하고 푸느라 *의 중첩을 어떤식으로 저장하고 관리해야할지에 대해 고민하다가 시간을 많이 뺏겼다. 보너스와 옵션 그리고 숫자를 각 횟수를 인덱스로 해서 배열에 담아서 계산했다. 10을 처리하는 부분에 있어서 매끄럽지 못했는데, 다른사람 풀이에서 신박한!! 풀이를 발견했다. def solution(dartRe..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 예전에도 이미 풀어놨던 문제이다. 보자마자 알겠지만... 큐를 사용해서 푸는 문제였고, 파이썬의 deque를 사용했다. 난 deque가 참 좋다...^ __ ^ cache크기에 맞춰서 도시가 cache에 있으면 remove했다가 가장 오른쪽(최신사용표시)으로 append해주고, 도시가 없을 경우엔 맨 왼쪽(가장 오래전에 사용된 도시) 도시를 popleft로 없앤 후 새로운 도시를 app..
문제 https://www.acmicpc.net/problem/1149 풀이 9달 전에도 풀었던 문제여서 그런지 그냥 보자마자 현재 집이 빨강이면 이전집 초록 블루 비용에 현재 빨강 비용을 더했을 때 더 적은 값을 저장해두고 마지막 배열에서 min인 값을 찾으면 되겠다...고 생각했다. 정답 코드 n = int(input()) minr,ming,minb = 0,0,0 for i in range(n): r,g,b = map(int,input().split()) if i==0: minr=r ming=g minb=b else: new_minr = min(ming+r,minb+r) new_ming = min(minb+g,minr+g) new_minb = min(ming+b,minr+b) minr = new_mi..