전체 글 219

[Softeer/Python] 복잡한 조립라인2 ★★★★★ - 효과는 굉장했다!

Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai SOLUTION 실패한 코드 import sys K, N = map(int, sys.stdin.readline().split()) dp = [] travel_time = [] for i in range(N-1): line = list(map(int, sys.stdin.readline().split())) dp.append(line[:K]) travel_time.append(line[-1]) dp.append(list(map(int, sys.stdin.readline().split()))) for i in range(N-1): for j in range(K): if i == j: dp[i+1][j] += dp[i][j] e..

[Softeer/Python] 복잡한 조립라인1 ★★★★☆ - 효과는 굉장했다!

Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai SOLUTION import sys K, N = map(int, sys.stdin.readline().split()) dp = [] travel_time = [[[0 for i in range(K)] for j in range(K)] for k in range(N)] for i in range(N-1): line = list(map(int, sys.stdin.readline().split())) dp.append(line[:K]) # 작업 시간 cnt = 0 for j in range(K): for k in range(K): if j == k: continue # 각 작업장 사이를 이동하는 시간들을 전부 할당 travel..

[Softeer/Python] 징검다리2 ★★★★☆ - 효과는 굉장했다!

Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai SOLUTION import sys import bisect # 이분 탐색 N = int(sys.stdin.readline()) stone_height = list(map(int, sys.stdin.readline().split())) dp_front = [stone_height[0]] # 앞 쪽 기준 밟을 수 있는 돌의 유효한 오름차순 높이 dp_back = [stone_height[-1]] # 뒷 쪽 기준 밟을 수 있는 돌의 유효한 오름차순 높이 front_cnt = [1] * N # 앞에서 부터 밟은 돌의 갯수 back_cnt = [1] * N # 뒤에서 부터 밟은 돌의 갯수 # 앞 쪽 기준 for i in rang..

[Softeer/Python] [인증평가(1차) 기출] 로봇이 지나간 경로 ★★★☆☆ - 효과는 굉장했다!

Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai SOLUTION import sys from collections import deque def check(x, y): cnt = 0 for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0 오른쪽으로 회전 ans.append("R") current = next cnt = 1 for i in ans: print(i, end="") sys.exit() "명령어의 개수를 최소화하면서 목표를 달성할 수 있는 방법이 여러 가지라면, 그 중 한 가지를 아무거나 출력하면 된다." 라는 조건이 있으므로 만족하는 경로를 찾으면 sys.exit()을 이용해 바로 프로그램을 종료시킨다. 이 문제는 처..

[Baekjoon/Python] 17144번: 미세먼지 안녕! - 효과는 굉장했다!

17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 알고리즘 분류 구현 시뮬레이션 SOLUTION import sys from copy import deepcopy # 미세먼지 확산 def spread(): dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] tmp_maps = [[0]*C for _ in range(R)] tmp_maps[air_up][0], tmp_maps[air_down][0] = -1, -1 for row in range(R): for col in range(C): if h..

[Baekjoon/Python] 14938번: 서강그라운드 - 효과는 굉장했다!

14938번: 서강그라운드 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 www.acmicpc.net 알고리즘 분류 그래프 이론 데이크스트라 플로이드–워셜 SOLUTION Dijkstra O(NlogN) import sys import heapq INF = sys.maxsize def dijkstar(start): heap = [] distance = [INF] * (n+1) heapq.heappush(heap, (0, start)) distance[start] = 0 while heap: wei, now = heapq.heappop(heap) if distance[n..

[Baekjoon/Python] 14502번: 연구소 - 효과는 굉장했다!

14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 알고리즘 분류 구현 그래프 이론 브루트포스 알고리즘 그래프 탐색 너비 우선 탐색 SOLUTION import sys from collections import deque def check_safe(copy_map): # 0인 지역을 탐색해서 카운트 해준다 cnt = 0 for i in range(N): for j in range(M): if copy_map[i][j] == 0: cnt += 1 ans.append(cnt) def build_wall(cnt): if cnt ==..

[Baekjoon/Python] 13172번: Σ - 효과는 굉장했다!

import sys import math mod = int(1e9+7) def Divide_and_Conquer(num, exp): if exp == 1: # 기댓값이 1 이면 return num if exp % 2 == 0: half = Divide_and_Conquer(num, exp//2) return half * half % mod else: return num * Divide_and_Conquer(num, exp-1) % mod M = int(sys.stdin.readline()) total = 0 for _ in range(M): N, S = map(int, sys.stdin.readline().split()) gcd = math.gcd(N, S) # 최대공약수 N //= gcd S //= g..

[Baekjoon/Python] 12851번: 숨바꼭질 2- 효과는 굉장했다!

12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 알고리즘 분류 그래프 이론 그래프 탐색 너비 우선 탐색 SOLUTION import sys from collections import deque def bfs(): queue = deque() queue.append(N) # 시작점 location[N][0] = 0 # 가장 빠른 시간 location[N][1] = 1 # 경우의 수 while queue: now = queue.popleft() for value in (now-..

[Baekjoon/Python] 11404번: 플로이드 - 효과는 굉장했다!

11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 알고리즘 분류 그래프 이론 플로이드–워셜 SOLUTION import sys INF = sys.maxsize n = int(sys.stdin.readline()) m = int(sys.stdin.readline()) maps = [[INF] * n for _ in range(n)] for _ in range(m): start, end, cost = map(int, sys.stdin.readline().split()) if cost < maps[start-1][en..