본문 바로가기

코딩테스트19

게임 맵 최단거리 문제풀이 효율성 실패 import copy def remove_values_from_list(the_list, val): return [value for value in the_list if value != val] def move(my_point, maps, y_len, x_len, count): count += 1 time = 0 counts= [] maps[my_point[0]][my_point[1]] = 0 new_maps = copy.deepcopy(maps) if my_point[0] == y_len-1 and my_point[1] == x_len-1: return count if(my_point[0] != 0 and maps[my_point[0]-1][my_point[1]] != 0): ti.. 2021. 6. 1.
3진법 뒤집기 문제풀이 def solution(n): answer = 0 n_3 = [] while(n >= 3): n_3.append(n % 3) n = int(n // 3) n_3.append(n) n_3 = n_3[::-1] for idx, num in enumerate(n_3): answer += (3**idx)*num return answer 알고리즘 진법에 관해 알고 있다면 쉽게 풀 수 있는 문제이다. 출처 문제: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 2021. 6. 1.
키패드 누르기 문제풀이 def solution(numbers, hand): answer = '' left = [1, 4, 7, '*'] middle = [2, 5, 8, 0] right = [3, 6, 9, '#'] l_point = [3, 1] r_point = [3, 1] for number in numbers: if number in left: answer += "L" l_point[0] = left.index(number) l_point[1] = 1 elif number in right: answer += "R" r_point[0] = right.index(number) r_point[1] = 1 else: l_abs = abs(l_point[0] - middle.index(number)) + l_point[1.. 2021. 5. 30.
튜플 문제풀이 import re def solution(s): answer = [] s = s.split('},{') for idx in range(0, len(s)): num_array = [] s[idx] = re.sub("\{|\}", "", s[idx]) s[idx] = s[idx].split(',') for i in range(0, len(s[idx])): s[idx][i] = int(s[idx][i]) s.sort(key=len) for num_array in s: for num in num_array: if num not in answer: answer.append(num) break return answer 알고리즘 특별한 알고리즘이 필요한 문제는 아니다. 다만 전에 봤던 sub() 메소드를 사.. 2021. 5. 29.