본문 바로가기

Algorithm/Implementation

(10)
자물쇠와 열쇠 유형 분석 및 구현 이 문제는 복잡하니 천천히 구현해야 한다. 1. 맵 넓히기 2. 자물쇠 설치 3. 키 하나하나 이동하며 설치 - 실패시 : 키 삭제 후 키 로테이션 - 성공시 : 종료 간단하지만 이걸 구현하는데, 맵을 만들고 키를 만들고 크기 구하고 설정할게 많다. 따라서 천천히 구현할 필요가 있다. # 키 로테이션 def rotation(array): x_length = len(array) y_length = len(array[0]) new_array = [[0]*x_length for i in range(y_length)] for i in range(x_length): for j in range(y_length): new_array[j][x_length-i-1] = array[i][j] retur..
치킨 배달 유형 파악 및 분석 역시나 구현문제들은 진짜 그냥 차분하게 풀어야한다. 그냥 차분하게 푸니까 풀린다. 이번 문제에 많은 시간을 쏟아 부었다. 구현문제는 항상 설계를 확실히 하는게 중요하고 변수명등 급하게 짜지말자. 코드 n, m = map(int, input().split()) chicken_pos = [] house_pos = [] graph = [] for i in range(n): graph.append(list(map(int, input().split()))) for j in range(n): if graph[i][j] == 1: house_pos.append([i, j]) if graph[i][j] == 2: chicken_pos.append([i, j]) from itertools import..
문제 뱀의 움직임 - 몸길이를 늘려 머리를 다음칸에 위치시킨다. - 이동한 칸에 사과가 있다면 사과는 없어지고 꼬리는 움직이지 않는다. - 사과가 없다면, 몸길이를 줄여 꼬리가 위치한 칸을 비워준다, 즉 몸 길이는 변하지 않는다. 초기 조건 - 초기 길이는 1이다. - 처음에는 오른쪽을 향한다. 게임 끝나는 조건 - 뱀이 자신의 몸 또는 벽에 부딪히는 경우 해결 이 문제는 좀 뱀의 움직임을 이해를 하는데 하는데 노력해야 한다. 1. 뱀의 길이는 1cm이다. 2. 몸길이를 늘려 머리를 다음칸에 위치시킨다. -> 예를 들어, 뱀이 시작지점인 (0, 0)에 위치한다고 가정했을 때, 뱀의 머리와 꼬리 모두 (0, 0)에 위치한 것이다. -> 움직임이 들어가면 (0, 0)에 꼬리, (0, 1)에 머리가 위치한다...
문자열 재정렬 문제 알파벳 대문자와 숫자로만 이루어진 문자열에 대해서 모든 알파벳을 오름차순으로 정렬하고 이 후, 모든 숫자를 더한값을 뒤에 붙여라 "K1KA5CB7" -> ABCKK13 유형 요구하는 것을 그대로 구현하면 되는 문제이다. 따라서 구현문제로 볼 수 있다. 코드 input = "K1KA5CB7" input = "AJKDLSI412K4JSJ9D" str_list = [] num = 0 for i in range(len(input)): if input[i].isalpha(): str_list.append(input[i]) continue num += int(input[i]) str_list.sort() result = [] for i in range(len(str_list)): result.append(st..
럭키 스트레이트 문제 항상 짝수자릿수에 대해서 반으로 나눠서 왼쪽의 합과 오른쪽의 합이 같으면 "Lucky", 아니면 "Ready" 출력하라. 유형 요구한 것을 그대로 구현하면 되는 문제이다. 코드 def solution(input): result1 = 0 result2 = 0 mid_index = int(len(input)/2)-1 for i in range(len(input)): if i
게임 개발 유형 구현-시뮬레이션 코드 array = [ [1, 1, 1, 1, 1], [1, 0, 0, 0, 1], [1, 1, 0, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1] ] start_dir = 0 start_x = 1 start_y = 1 dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] count = 0 result = 1 while(1): array[start_x][start_y] = 1 left = start_dir-1 if left < 0: left = 3 pos_x = start_x + dx[left] pos_y = start_y + dy[left] if 0
왕실의 나이트 유형 일련의 명령에 따라서 개체를 차례대로 이동시킨다는 점에서 '구현-시뮬레이션' 알고리즘 코드 pos = "a1" column = int(ord(pos[0]) - int(ord('a'))) + 1 row = int(pos[1]) # Solution1 a = [-2, 2] b = [-1, 1] count = 0 for i in range(2): for j in range(2): x_pos = column + a[i] y_pos = row + b[j] if 1
시각 문제 정수 N에 대하여 00시00분00초부터 N시59분59초까지 모든 시각에 3을 포함하는 경우의 수 유형파악 가능한 모든 경우의 수를 탐색 -> (Implementaion - 완전탐색) 코드 # 완전탐색으로 해결해도 됨. for i in range(n+1): for j in range(60): for k in range(60): if '3' in str(i) + str(j) + str(k): count += 1 n = 1 count = 0 for i in range(0, n): if '3' in str(i): count += 1 print((15*60+45*15)*(n-count+1)+3600*count) 완전탐색으로 구현시 시간복잡도 O(N) 최대 24*60*60