
문제 프로그래머스 연습문제- 나누어 떨어지는 숫자 배열 https://programmers.co.kr/learn/courses/30/lessons/12910 풀이 주어진 배열을 divisor로 나누어 나머지가 0인 값만 ans배열에 넣는다. 만약 ans배열이 비어있다면, -1을 넣고 리턴한다. 코드 def solution(arr, divisor): ans=list() for i in range(len(arr)): if arr[i]%divisor == 0: ans.append(arr[i]) if ans == []: ans=[-1] ans.sort() return ans

문제 프로그래머스 2018 서머코딩- 숫자 게임 https://programmers.co.kr/learn/courses/30/lessons/12987 풀이 A,B를 내림차순으로 정렬을 하고, 각 A의 원소당 최소 차이가 나는 B를 선택한다. 만약 A의 값이 더 크다면 그냥 넘어가지만 A를 이기는 B가 있다면 그 값을 제거하고 answer을 1 증가시킨다. 코드 def solution(a, b): ans =0 a=sorted(a,reverse=True) b=sorted(b,reverse=True) for i in a: Min = i for j in range(len(b)): if b[j] > Min: Min = b[j] else: break if Min == i: continue else: b.remove..

문제 프로그래머스 주식가격 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]: ..