목록알고리즘 문제 풀이/이코테 (60)
파란색가운의 개발 블로그

from collections import deque sys.setrecursionlimit(100000000) import heapq INF = 1e9 N,K = map(int,sys.stdin.readline().split()) count = 0 while True: if N == 1: break if N%K == 0: N = N / K count +=1 else: N -=1 count +=1 print(count) 일단 이게 내 코드이다 K가 2보다 크거나 같다는 것을 보고 K로 나눠줄 수 있으면 무조건 나눠주는 것이 이득이겠구나를 잡아내고 간단하게 풀었다 테스트 케이스도 다 맞는 건 확인했지만 반례가 있다면 환영입니다 ! 이건 답안입니다 import sys # sys.stdin.readline()..

import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(100000000) import heapq INF = 1e9 array = [] N,M = map(int,sys.stdin.readline().split()) for _ in range(N): array.append(list(map(int,sys.stdin.readline().split()))) maxValue = min(array[0]) for i in range(N): temp = min(array[i]) if maxValue < temp: maxValue = temp print(maxValue) 내 코드 이차원배열으로 해결했다 그냥 maxValue..

import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(100000000) import heapq INF = 1e9 N,M,K = map(int,sys.stdin.readline().split()) x = list(map(int,sys.stdin.readline().split())) x.sort(reverse = True) max = x[0] max2 = x[1] sum = 0 index = 0 print(x) for _ in range(M): index +=1 if index % K == 0: sum+=max2 else: sum += max print(sum) 일단 이게 내가 처음 짠 코드 k번은 가장 큰..
import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(100000000) import heapq INF = int(1e9) def bfs(graph,x,y): dx = [1,0,-1,0] dy = [0,1,0,-1] index = 2 nx = 0 ny = 0 queue = deque() queue.append((x,y)) while queue: flag = 0 a,b = queue.popleft() # 큐에서 원소 2개를 빼오고 graph[a][b] = -1 # 방문 처리해준다 for i in range(4): nx = a + dx[i] # x와 y의 방향 점검 ny = b + dy[i] if nx < 0..
전형적인 DFS 문제였다 여기로 갔다가 어떻게 돌아오지? 라는 생각이 들면 무조건 재귀를 떠올릴 것 너무 시간을 많이 까먹는게 아니라면 시간복잡도에 걸릴 일도 없고 효율적으로 탐색할 수 있다 import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(100000000) import heapq INF = int(1e9) def dfs(graph,row,col,N,M): if row = N or col = M: return False if graph[row][col] == 0: graph[row][col] = 1 dfs(graph,row+1,col,N,M) dfs(grap..
import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(100000000) import heapq INF = int(1e9) N,M = map(int,input().split()) x,y,direction = map(int,input().split()) d =[[0] * M for _ in range(N)] array = [] d[x][y] = 1 for i in range(N): array.append(list(map(int,input().split()))) dx = [-1,0,1,0] dy = [0,1,0,-1] def turn_left(): global direction direction -=1 if ..
import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(100000000) import heapq INF = int(1e9) command = input() index = 1 idx = 1 array = ['a','b','c','d','e','f','g','h'] for elem in array: if array == command[0]: index = idx idx+=1 x = idx y = int(command[1]) count = 0 move_types = [(2,1),(2,-1),(-2,-1),(-2,1),(1,2),(-1,2),(1,-2),(-1,-2)] for move in move_types: ..
import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(1000000) import heapq INF = int(1e9) N,M,C = map(int,sys.stdin.readline().split()) graph = [[] for _ in range(N+1)] distance = [INF] * (N+1) for i in range(M): x,y,z = map(int,sys.stdin.readline().split()) graph[x].append((y,z)) q = [] def dijkstra(start): distance[start] = 0 heapq.heappush(q,(0,start)) while q..
import sys # sys.stdin.readline() from collections import deque sys.setrecursionlimit(1000000) import heapq INF = int(1e9) N,M = map(int,sys.stdin.readline().split()) graph = [[INF] *(N+1) for _ in range(N+1)] for i in range(N+1): for j in range(N+1): if i == j: graph[i][j] = 0 for i in range(M): a,b = map(int,sys.stdin.readline().split()) graph[a][b] = 1 graph[b][a] = 1 X, K = map(int,sys.stdin..
import sys import heapq from sys import stdin from collections import deque sys.setrecursionlimit(10 ** 8) sys.stdin.readline import sys from sys import stdin from collections import deque sys.setrecursionlimit(10 ** 8) sys.stdin.readline INF = int(1e9) N = int(input()) M = int(input()) graph = [[INF] * (N+1) for _ in range(N+1)] for i in range(1,N+1): for j in range(1,N+1): if i == j: graph[i][..