문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이플로이드 워셜로 풀이 시 시간 초과가 뜬다.다익스트라로 해결 완료import heapqdef solution(n, edge): answer = 0 INF = 1e9 graph = [[] for _ in range(n+1)] # graph[i] : i번 노드와 연결된 노드 저장 distance = [INF for _ in range(n+1)] # dist[i] : 1번 노드와 i번 노드 사이의 최단거리 for i in edge : graph[i[0]].ap..
문제https://www.acmicpc.net/problem/1459 풀이2 * W가 S보다 작거나 같다면, 대각선 이동을 하지 않고 직선 이동만 해서 집에 도달하는 것이 가장 적은 시간이 걸린다. 그러나 2 * W가 S보다 크다면 상황이 약간 복잡해진다.나는 크게 세 가지 경우로 나누어 생각했다.대각선으로만 이동 가능한 경우대각선으로 최대한 이동 후, 직선으로 한 번만 이동하는 경우대각선, 직선 이동을 섞어야 하는 경우1. 대각선으로만 이동 가능한 경우(X, Y) 좌표의 합이 짝수라면, 대각선으로만 이동하며 집에 도착할 수 있다.이 경우 걸린 시간은 S * max(X, Y)가 된다.2. 대각선으로 최대한 이동 후, 직선으로 한 번만 이동하는 경우(X, Y) 좌표의 합이 홀수라면, 즉 X와 Y 중 하나는..
문제https://www.acmicpc.net/problem/9440 풀이주어진 숫자를 오름차순으로 정렬한 후, 앞에서부터 하나씩 순서대로 num1과 num2로 나누어주었다.예를 들어 [3, 4, 2, 2, 2, 2]가 주어졌을때 오름차순으로 정렬하면 [2, 2, 2, 2, 3, 4]이고, 앞에서부터 하나씩 num1과 num2로 나누어준다면 결과는 다음과 같다.num1 = [2, 2, 3]num2 = [2, 2, 4]따라서 정답은 223 + 224 = 447이다. 이때 주어진 숫자에 0이 포함된 경우, 두 정수는 0으로 시작하면 안된다는 것에 유의해야 한다.예를 들어 [0, 1, 2, 3, 4, 0, 1, 2, 3]이 주어졌다면, 오름차순으로 정렬 시 [0, 0, 1, 1, 2, 2, 3, 3, 4]이고..
문제https://www.acmicpc.net/problem/7774 풀이콘센트 - 첫 번째 멀티탭 - 두 번째 멀티탭 - 첫 번째 멀티탭 - 두 번째 멀티탭 ...이렇게 반복해서 꽂을 수 있다는 점에 유의해야 한다. 우선 첫 번째 멀티탭과 두 번째 멀티탭을 콘센트 개수를 기준으로 정렬한다.첫 번째 멀티탭 중 가장 많은 콘센트를 가지고 있는 멀티탭을 콘센트에 꽂고, 그 콘센트 개수만큼 두 번째 멀티탭을 선택해서 꽂는다(이 때도 가장 많은 콘센트를 가지고 있는 멀티탭부터 선택).만약 첫 번째 멀티탭과 두 번째 멀티탭이 각각 한 개 이상 남았다면, 또다시 꽂을 수 있으므로 위의 과정을 반복한다.n, m = map(int, input().split())a = list(map(int, input().split(..
문제https://www.acmicpc.net/problem/1339 풀이ABC + CE= (A*100 + B*10 + C) + (C*10 + D)= A*100 + B*10 + C*11 + D 이렇게 나타낼 수 있다는 점에 집중해서 문제를 풀었다.각 문자가 위치한 자리수들을 저장해놓은 후, 자리수 기준으로 정렬을 하고 큰 자리수를 가지는 문자에 큰 수를 할당하는 방식으로 풀었다. 위의 예에서는 [A:100, C:11, B:10, D] 순으로 큰 자리수를 가지고 있으므로, A=9, C=8, B=7, D=6을 할당하면 그 합을 가장 크게 만들 수 있게 된다.N = int(input())words = []for _ in range(N) : words.append(input())word_dic = {}for ..