목록Algorithm (111)
S E P H ' S
코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈 programmers.co.kr 풀이 현재 위치에서 0으로 되는 지점을 찾는다. 순간이동은 현재까지 이동한 위치 * 2이므로 2씩 나누다가 나머지가 0이 아닌 경우에 cnt += 1을 한다. def solution(n): cnt = 0 while n > 0: q, r = divmod(n, 2) n = q if r != 0: cnt += 1 return cnt
코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr 풀이 분할정복 문제이다. 1. 각 사각형 안에서의 첫 좌표 값을 초기값으로 잡고, 2. 범위를 2를 나눈 만큼 찾아 들어간다. def solution(arr): answer = [0, 0] N = len(arr) def d_q(r, c, n): init = arr[r][c] ..
코딩테스트 연습 - 스킬트리 programmers.co.kr 풀이 1. 스킬트리 안의 각 스킬들이 선행스킬안에 있는지 파악. 있으면 다른 리스트 하나에 저장. 2. 그 리스트에서 enumerate를 해서 idx, 값 추출. 3. 그 스킬과, 그 스킬의 인덱스에 해당하는 선행스킬 리스트의 스킬과 같지 않으면 불가능한 스킬트리인 것. def solution(skill, skill_trees): skill = list(skill) flag = [] for i in skill_trees: post_skill_trees = [] for j in list(i): if j in skill: post_skill_trees.append(j) for idx, j in enumerate(post_skill_trees): i..
코딩테스트 연습 - 방문 길이 programmers.co.kr 문제보기 더보기 풀이 1. 델타 사용. 2. 가는 '길'이 중복되는 것은 제외 -> set 사용 3. set에 저장할 때, 좌표점이 아닌 가는 길을 저장. def solution(dirs): dir = {'U':(1,0), 'D':(-1,0), 'L':(0,-1), 'R':(0,1)} road = set() cr, cc = 0, 0 for d in dirs: nr, nc = cr + dir[d][0], cc + dir[d][1] if -5