본문 바로가기

Algorithm245

[백준] 19237번 - 어른 상어 (파이썬) # 어른 상어 import copy import sys input = sys.stdin.readline N, M, k = map(int, input().split()) arr = [] shark = [] history = [[0] * N for _ in range(N)] history_index = [] for i in range(N): arr.append(list(map(int, input().split()))) for j in range(N): if arr[i][j] != 0: arr[i][j] = arr[i][j] history[i][j] = k history_index.append((i, j)) shark.append([arr[i][j], i, j]) shark_dir = [0]+list(map(.. 2022. 3. 19.
[프로그래머스] Lv1 - 예산 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12982 코딩테스트 연습 - 예산 S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 programmers.co.kr def solution(d, budget): d.sort() answer = 0 for x in d: if budget >= x: budget -= x answer += 1 return answer 그리디 1. d리스트를 정렬 (가장 적은 예산부터 주기 위해서) 2. budget에서 d리스트를 빼가면서 answer를 1씩 늘려간다. 3. return answer 2022. 3. 18.
[프로그래머스] Lv1 - 3진법 뒤집기 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/68935 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr def solution(n): temp = '' while n: temp += str(n % 3) n = n//3 return int(temp, 3) 풀이 1. 문제를 보면 3진법의 뒤집어진 문자열을 만들어야 하므로 temp에 나머지를 계속해서 더해간다 2. temp를 int화 해준다. (int의 두 번째 인자는 해.. 2022. 3. 18.
[프로그래머스] Lv1 - 약수의 개수와 덧셈 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr import math def solution(left, right): answer = 0 for x in range(left, right+1): if math.sqrt(x) == int(math.sqrt(x)): answer -= x else: answer += x return answer 풀이 1. 각 수의 .. 2022. 3. 18.
[프로그래머스] Lv1 - 포켓몬 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr def solution(nums): pick = len(nums) // 2 nums = set(nums) answer = pick if len(nums) >= pick else len(nums) return answer 풀이 1. 골라야 할 개수 pick 정의 2. 집합의 성질을 이용해서 중복되는 수 제거 3. 중복된 수를 제거한 리스트의 길이가 골라야 할 개.. 2022. 3. 18.
[백준] 17852번 - 주사위 윷놀이 (파이썬) # 주사위 윷놀이 import copy move = list(map(int, input().split())) horse = [[0, 0], [0, 0], [0, 0], [0, 0]] road = [[i for i in range(0, 41, 2)], [i for i in range( 0, 11, 2)]+[13, 16, 19], [i for i in range(0, 25, 2)], [i for i in range(0, 31, 2)]+[28, 27, 26], [25, 30, 35, 40]] def back_tracking(x, result, horse): global answer if x == 10: answer = max(answer, result) return for k in range(4): # 도착한.. 2022. 3. 18.
[프로그래머스] Lv1 - 소수 만들기 (파이썬) https://programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr import math from itertools import combinations as comb def solution(nums): sum_list = [sum(i) for i in list(comb(nums,3))] answer = 0 for x in sum_list: isOK = True for i in range(2, int(math... 2022. 3. 17.