일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 최단경로
- BFS
- 그래프탐색
- [1차]캐시
- 위상정렬
- 백준
- DP
- 파이썬
- 벽부수고이동하기
- 프로그래머스
- 다익스트라
- 최소스패닝트리
- 거리두기확인하기
- RGB거리2
- 17404
- 구현
- javascript
- 사이클게임
- 트리의지름
- 자물쇠와열쇠
- 파괴되지않은건물
- 섬연결하기
- 징검다리건너기
- DFS
- 프림알고리즘
- 큐
- 두큐합같게만들기
- 이모티콘할인행사
- 알고리즘
- 도넛과막대그래프
- Today
- Total
목록알고리즘 (48)
블로그 이름 뭐로 하지
문제 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/64065 풀이 얘도 예전에 풀었던 문제인데, 그 당시엔 문자열에서 숫자를 뽑아내서 배열을 만들 때 정규식을 활용했었다. 근데 사실 난 정규식 사용을 잘 못한다 ^ . ^ 그니까 검색해서 하는건 할 수 있어도 코딩테스트 때 아무것도 없이 짜라고 했으면 정규식으로는 못 짰을거다.... 그래서 이번엔 정규식을 안 쓰고 그냥 스택을 활용해서 { 으로 열릴 때랑 }으로 닫힐때는 판단하고 쉼표로 다른 숫자가 나올 때를 고려해서 풀었다. 근데 다 풀고 나니까 split()함수가 생각이 나서...이 함수를 이용해서 하니 확실히 훨씬 간단한 코드가 되더라. 이 코드는 맨 밑에 첨부해놨다! 정답 코드 from c..
문제 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..
문제 https://www.acmicpc.net/problem/1043 1043번: 거짓말 지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게 www.acmicpc.net 풀이 보자마자 그래프 탐색이라는 생각이 들었지만 인덱스를 무엇으로 두고, 어떻게 연결해야할지에 대한 고민이 생겼다. 아무래도 배열 하나로는 안 될 것 같다는 생각이 들었고, 최종적으로는 두 개의 배열을 만들어서 해결했다. 내가 사용한 배열은 2가지이다. 1. 인덱스 번호에 해당하는 번호를 가진 사람이 참여한 파티 번호들을 담아두고 있는 배열 ex) [[],[1],[2,3]] 이라고 돼있다면 1번 사람은..