구현 알고리즘 - 왕실의나이트
지난 포스팅에서 풀었던 상하좌우 알고리즘을 기초하여 풀었습니다. 이동할 수 있는 범위를 정해 놓고 좌표를 이동하면서 경우의 수를 체크하는것 입니다. def move(p): row = int(p[1]) column = int(ord(p[0])+1)-int(ord(p[0])) steps = [(-2,-1),(-1,-2),(1,-2),(1,2),(2,-1),(2,1),(-1,2),(-2,1)] result = 0 for step in steps: next_row = row + step[0] next_column = column + step[1] if next_row >=1 and next_row = 1 and next_column
2020. 11. 26.
구현 알고리즘 - 상하좌우
문제설명 풀이 def trevel(a,move): move = list(move) x = 1 y = 1 for i in move: if i == 'R': if y != a: y+=1 if i == 'L': if y!=1: y-=1 if i == 'U': if x != 1: x-=1 if i == 'D': if x!= a: x+=1 return (x,y) def trevel(a,move): move = list(move) x = 1 y = 1 dx = [0,0,-1,1] dy = [-1,1,0,0] move_types = ['L','R','U','D'] for plan in move: for i in range(len(move_types)): if plan == move_types[i]: nx = x + ..
2020. 11. 26.
그리디 알고리즘 - 큰수의 법칙
예제 큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙이다. 단, 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다. 예를 들어 순서대로 2, 4, 5, 4, 6으로 이루어진 배열이 있을 때 M이 8이고, K가 3이라고 가정하자. 이 경우 특정한 인덱스의 수가 연속해서 세 번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5인 46이 된다. 단, 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로 간주한다. 예를 들어 순서대로 3, 4, 3, 4, 3으로 이루어진 배열이 있을 때 M이 7이고, K가 2라고 가정하자. 이 경우..
2020. 11. 25.