전체 글
-
프린터프로그래밍/알고리즘 2021. 3. 30. 16:52
풀이 from collections import deque def solution(priorities, location): answer = 0 d = deque([(v, i) for i, v in enumerate(priorities)]) # d에다가 값 인덱스 순으로 deque을 사용해 만든다. while len(d): item = d.popleft() # 0번째 값, 인덱스가 item으로 튜플형으로 넘어간다. if d and max(d)[0] > item[0]: # 만약 d의 밸류보다 item의 밸류가 크다면 뽑은 item을 d.append(item) # d의 뒤로 append함. else: # 아니라면 answer += 1 # 순서를 하나 카운트 해준다음 if item[1] == location: ..
-
크레인 인형뽑기 게임프로그래밍/알고리즘 2021. 3. 28. 16:08
풀이 def solution(board, moves): grabBox = [] answer = [] for move in moves: for i in range(len(board)): if board[i][move-1] > 0: # index가 0 보다 크면 grabBox.append(board[i][move-1]) # grabBox에 그 수를 넣어줌 -> 인형 뽑았다는 소리 board[i][move-1] = 0 # 뽑은 그 자리를 0으로 메꿔준다. if grabBox[-1:] == grabBox[-2:-1]: # 맨 뒷자리와 맨 뒷자리 전의 수가 같으면 answer += grabBox[-1:] # answer에 맨 뒷자리 수를 넣어줌 grabBox = grabBox[:-2] # grabBox에 맨 뒷자..
-
행렬의 덧셈프로그래밍/알고리즘 2021. 3. 28. 14:06
나의 풀이 def solution(arr1, arr2): answer = [] for i in range(len(arr1)): a1 = arr1.pop(0) a2 = arr2.pop(0) num = [x + y for x, y in zip(a1, a2)] answer.append(num) return answer 다른 사람 풀이 def sumMatrix(A,B): answer = [[c + d for c, d in zip(a, b)] for a, b in zip(A,B)] return answer 이중 for문 컴프리헨션으로 끝냈다.
-
-
소수찾기프로그래밍/알고리즘 2021. 3. 27. 16:14
풀이 def solution(n): a = set([i for i in range(3, n+1, 2)]) for i in range(3, n+1, 2): if i in a: a -= set([i for i in range(i*2, n+1, i)]) return len(a)+1 참고 블로그 - Link [Python] 프로그래머스 - 소수찾기 - 문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) - 제한 rain-bow.tistory.com
-
3진법 뒤집기프로그래밍/알고리즘 2021. 3. 27. 15:27
풀이 def n_ary(n, base): result = [] while n > 0: n, r = divmod(n, base) # 몫이 없어질 때까지 나누기 result.append(r) # 나머지를 result에 추가 return ''.join(map(str, reversed(result))) # join 함수를 사용해 result를 뒤집고 하나의 문자열로 바꾼다. def solution(n): b3 = n_ary(n, 3) # n_ary에 10진수와 진법을 보냄 b3 = b3[::-1] # 리턴된 문자열을 뒤집는다. return int(b3, 3) # int의 base를 사용해 10진수로 바꾼다. divmod는 몫과 나머지를 리턴해준다. int의 두번째인자인 base를 사용하면 진법을 쉽게 바꿀 수 ..