본문 바로가기

분류 전체보기

(172)
[알고리즘] 프로그래머스 N으로 표현 / python https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 | 프로그래머스 programmers.co.kr DP로 풀어내는 문제. 만약, N=5일때 arr[0] 👉 5 arr[1] 👉 55 , 5+5, 5-5, 5*5, 5//5 이런식으로 전개된다 5를 4번 사용한 경우(arr[3])를 생각해보면, arr[0] (+ - * //) arr[2] arr[1] (+ - * //) arr[1] arr[2] (+ - * //) arr[0] 에서 중복을 제거한 수들이 될것이다. def solution(N, number): arr = [set() for i in range(8)] for i, num in enumerate(arr, start=..
[알고리즘] 프로그래머스 더 맵게 / python https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 | 프로그래머스 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 programmers.co.kr 정렬하고 최소값을 찾을때는 최소힙으로 풀어야 시간복잡도 낮출 수 있다 imp..
[알고리즘] 프로그래머스 큰 수 만들기 / python https://programmers.co.kr/learn/courses/30/lessons/42883 코딩테스트 연습 - 큰 수 만들기 | 프로그래머스 programmers.co.kr 생각해야할것 * 두번째 예시에서 3을 넣을때 1,2 두개를 빼줘야한다 * 만약 number = "9876", k = 2 일때, 76을 잘라주는 경우도 생각 def solution(number, k): answer = '' arr = [] for i, num in enumerate(number): while len(arr) > 0 and num > arr[-1] and k > 0: arr.pop() k -= 1 if k == 0: arr += list(number[i:]) break arr.append(num) if k !=..
[알고리즘] 프로그래머스 가장 큰 수 / python https://programmers.co.kr/learn/courses/30/lessons/42746 코딩테스트 연습 - 가장 큰 수 | 프로그래머스 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. programmers.co.kr number = [34, 343] 일때 34 343 > 343 34 이..
[알고리즘] 프로그래머스 체육복 / python https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 | 프로그래머스 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 programmers.co.kr def solution(n, lost, reserve): answer = 0 ..
[알고리즘] 프로그래머스 완주하지 못한 선수 / python https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 partic programmers.co.kr 참여자가 숫자로 주어졌을땐, 배열의 인덱스를 이용하면 된다 문자..
[알고리즘] 프로그래머스 스킬트리 / python https://programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 | 프로그래머스 programmers.co.kr def solution(skill, skill_trees): answer = 0 not_answer = 0 for i in range(len(skill_trees)): j = skill_trees[i] temp = 0 for k in range(len(j)): if j[k] in skill: if j[k] == skill[temp]: temp += 1 else: not_answer += 1 break answer = len(skill_trees) - not_answer return answer 더러운 내 코드.. def solu..
[알고리즘] 백준 9251 LCS / python https://www.acmicpc.net/problem/9251 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net X와 Y의 문자열이 같다면, dp[i][j] = 대각선+1 X와 Y의 문자열이 다르다면, dp[i][j] = max(왼쪽값, 위값) X = input() Y = input() dp = [ [0] * (len(Y)+1) for _ in range(len(X)+1) ] for i in range(len(X)): for j in range(len(Y)): i..