문제 프로그래머스 주식가격 https://programmers.co.kr/learn/courses/30/lessons/42584 풀이 만약 다음 주식 가격이 더 올랐거나 같아서 유지가 되었다면 answer을 1 증가시키고 그게 아니라면 다음 시간까진 유지가 됐다고 판단하여 cnt를 1 증가시켜주고 break 시켜답을 구할 수 있다. 코드 def solution(prices): answer = [0] * len(prices) for i in range(len(prices)): for j in range(i+1, len(prices)): if(prices[i]
문제 프로그래머스 k번째 수 https://programmers.co.kr/learn/courses/30/lessons/42748 풀이 문제에서 요구한대로 배열을 자르고 오름차순 정렬 후 k번째 수를 구하면 된다. i의 0번째 값 -> 시작 index i의 1번째 값 -> 끝 index i의 2번째 값 -> k번째 수 따라서 array[시작 index-1 : 끝 index]로 문자열을 자르고 정렬 후 k번째 수를 구하면된다. 코드 def solution(array, com): answer = [] arr = [] for i in com: arr=array[i[0]-1:i[1]] arr.sort() answer.append(arr[i[2]-1]) return answer
문제 프로그래머스 2018 서머코딩- 스킬트리 https://programmers.co.kr/learn/courses/30/lessons/49993 풀이 선행 스킬 순서 skill과 유저들이 만든 스킬트리를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 해야한다. 중복이 주어지지 않기 때문에 skill_tree에 값을 하나씩 비교하여 temp에 담고 주어진 skill과 동일한지 비교하여 판단한다. 만약 temp와 skill의 값이 일치하면 가능한 스킬트리로 간주하여 answer+1 해줌. 코드 def solution(skill, skill_trees): answer = 0 for i in skill_trees: temp = list() check = True..
문제 프로그래머스 2018 서머코딩- 영어 끝말잇기 https://programmers.co.kr/learn/courses/30/lessons/12981 풀이 끝말잇기 탈락 조건은 잘못된 단어를 말하거나, 이전에 나왔던 단어를 말하는 경우이다. 따라서 탈락 조건에 대해 검사하고 check를 True로 바꿔준다. check가 True라면 탈락된 것이므로 탈락된 사람의 번호와 몇 번째에탈락하는지 구하여 반환한다. 코드 def solution(n, words): answer = [] check = False end = words[0][-1] for i in range(1,len(words)): p1 = words[i-1] p2 = words[i] for j in range(0,i): if words[i] ==..
문제 프로그래머스 2017 팁스다운- 짝지어 제거하기 https://programmers.co.kr/learn/courses/30/lessons/12973 풀이 스택을 이용하여 풀었다. s를 하나씩 스택에 넣고 비교하여 같으면 pop, 다르면 push한다. 마지막에 스택이 비었는지 검사하여 성공했는지 실패했는지 판단한다. 코드 def solution(s): answer = 0 stack =[] for i in range(len(s)): if stack: temp = stack[-1] if temp != s[i]: stack.append(s[i]) else: stack.pop() else: stack.append(s[i]) if stack: answer=0 else: answer=1 return answer
문제 프로그래머스 2017 팁스다운- 예상대진표 https://programmers.co.kr/learn/courses/30/lessons/12985 풀이 이 문제에서 중요한 점은 a와 b의 위치이다. a와 b의 다음 라운드 번호를 구하기 위해 2로 나눈 값의 몫을 구한다 다음 라운드의 번호를 구해서 a와 b의 번호가 같아질때까지 반복한다. 코드 def solution(n,a,b): answer = 0 while a!=b: a= (a+1)//2 b= (b+1)//2 answer+=1 return answer
문제 프로그래머스 2018 서머코딩- 소수만들기 https://programmers.co.kr/learn/courses/30/lessons/12977 풀이 조합 리스트(temp)를 만들고, 소수를 저장하는 리스트(primes)를 만들어 temp의 합을 primes와 비교하는 방법으로 풀었다. combinations를 이용해 조합을 만들었고, 에라토스테네스의 체를 이용해 소수를 구했다. 코드 from itertools import combinations def solution(nums): ans=0 temp = list(combinations(nums,3)) n=10000 a = [False,False] + [True]*(n-1) primes=[] for i in range(2,n+1): if a[i]: ..
문제 프로그래머스 2018 서머코딩- 점프와 순간이동 https://programmers.co.kr/learn/courses/30/lessons/12980 풀이 순간이동으로 최대한 많이 이동해야 건전지 사용량이 최소가 된다. 최댓값 n에서 2로 나누면서 값을 확인한다. n이 홀수일 (n-1)/2 해준다. 건전지 사용량 1 증가시킨다. n이 1되면 종료 코드 def solution(n): ans = 1 while True: if n ==1: break; if n % 2 == 0: n=n/2 else: n=(n-1)/2 ans +=1 return ans
문제 프로그래머스 2018 서머코딩- 기지국 설치 https://programmers.co.kr/learn/courses/30/lessons/12979 풀이 모든 영역을 커버할 수 있는 기지국을 최소로 설치하는 문제이다. 설치 할 기지국의 영역이 설치 된 기지국의 영역과 겹치지 않으면서, 최대로 활용되는 것이 최적해이다. 설치 된 기지국 영역에 속하지 않으면 기지국을 설치하고 기지국이 가질 수 있는 최대 영역(2*w+1)만큼 현재 위치를 이동시킨다. 영역에 속한다면 기지국 영역의 +1로 현재 위치를 이동시키고, index를 증가시켜 다음 기지국을 기준으로 다시 반복하여 최적의 설치 개수를 구할 수 있다. 코드 def solution(n, s, w): answer=0 idx = 0 locate = 1 wh..