
문제 프로그래머스 연습문제- 같은 숫자는 싫어 https://programmers.co.kr/learn/courses/30/lessons/12906 풀이 arr 배열안에 연속적으로 나타나는 숫자를 하나만 남기고 제거하는 문제이다. ans라는 배열에 arr의 첫번째 값을 초기값으로 넣고, 이후 수를 비교한다. ans의 -1번째 수, 즉 ans 배열의 마지막 원소를 arr[i]번째 수와 비교하여 답을 찾을 수 있다. 코드 def solution(arr): ans = list() ans.append(arr[0]) for i in range(1, len(arr)): if ans[-1] != arr[i]: ans.append(arr[i]) else: continue return ans

문제 프로그래머스 연습문제- 나누어 떨어지는 숫자 배열 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