본문 바로가기
반응형

Algorithm60

[프로그래머스] 파이썬 문제풀이 - 점프와 순간 이동 https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 첫 풀이 1. 편한 탐색을 위해 배열을 한 번 더 붙여준다 2. 뽑을 길이를 제어해줄 for문을 만든다 ex)길이 1인 부분수열만들지, 2인 부분수열만들지 3. 수열을 추출할 인덱스를 시작할 for문을 만든다 ex) 길이 2인 부분수열 만들 때 [0:2] 할지 [1:3]할지 def solution(elements): s1 = set() n=len(elements) elements=elements.. 2023. 5. 13.
[프로그래머스] 파이썬 문제풀이 - 점프와 순간 이동 https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 첫 풀이 1. n의 범위가 상당히 크므로 규칙이 있다고 생각했다 2. 온거리만큼 순간이동하는게 k칸 점프보다 무조건 우선순위가 되야한다 3. 1부터 올라가기보다 n에서 내려가는 방법이 효울적이라고 생각했다 4. n부터 2로 나누며 내려온다. 나눠서 홀수가 되면 1을 빼서 짝수를 만들어준다 5. 1을 뺐을때는 에너지를 사용했으므로 답에 1을더해준다 6. 1이 될때까지 반복한다 def solution.. 2023. 5. 10.
[프로그래밍] 파이썬 문제풀이 - 베스트앨범 https://school.programmers.co.kr/learn/courses/30/lessons/42579# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 1. dic에는 key: genres, value=plays 형태로 장르별 재생수를 합산하다 2. gen에는 [인덱스, 장르, 플레이 수] 를 삽입한다, 인덱스=고유번호 3. dic을 재생수로 정렬하고 탐색한다 4. gen도 재생수로 정렬한다 5. 장르별로 돌면서 재생수가 많은 두 개를 찾는다 6. 재생수가 많은 장르별로 돌고있고 플레이수, 인덱스 순으로 정렬되어있어서 순서는 신경안써도.. 2023. 5. 9.
[프로그래머스] 파이썬 문제풀이 - 예상 대진표 https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 첫 풀이 1. a와 b가 1차이가 날때까지 2로 나눈다(ex 1,2) 2. 2로 나눌때마다 라운드를 더해준다 import math def solution(n,a,b): answer = 1 while a != b: if a%2==1 and a+1==b: break a=math.ceil(a/2) b=math.ceil(b/2) answer+=1 return answer 시간초과가 발생했다. 더 나은 답.. 2023. 5. 9.
[프로그래머스] 파이선 문제풀이 - 기지국 설치 첫 풀이 1. n 길이의 배열을 만들어 전파가 터지는곳이면 0 안터지면 -1을 저장한다 2. 전파가 터지지 않는 구간을 찾아 전파의 범위로 나눈다 def solution(n, stations, w): cnt=0 answer = [-1 for _ in range(n+1)] no=[] for i in stations: answer[i]=0 for j in range(1,w+1): if i-j>=1: answer[i-j]=0 if i+j0: cnt+=math.ceil((s-w-idx)/ran) idx=s+w+1 if idx-1 2023. 5. 8.
[프로그래머스] 파이썬 문제풀이 - 숫자 게임 첫 풀이 1. A를 앞으로 한칸씩 땡기기 2. A와 B를 전체 비교 3. 이중 for문으로 len(A)만큼 돌리는거라 시간이 괜찮을까 걱정했다 def solution(A, B): answer = -1 A.sort(reverse=True) B.sort(reverse=True) m=-123 for i in range(len(A)): cnt=0 for j in range(len(A)): if A[j]m: m=cnt if cnt=B[idx]: continue else: answer+=1 B.pop(0) return answer 배운 점 1. 범위가 큰데 이중 for문에 리스트 전체를 탐색하면 연산시간이 오바할 수가 있다. 2. 간단하게 바꿀 수 있는 부분을 찾는다 2023. 5. 6.
[프로그래머스] 파이썬 문제풀이 - 다리를 지나는 트럭 첫 풀이 1. 다리길이의 리스트를 만든다 2. 한 칸씩 땡기며 무게가 가능하면 차를 올려준다 def solution(bridge_length, weight, truck_weights): answer=0 bridge=[0 for _ in range(bridge_length)] while bridge: answer+=1 bridge.pop(0) if truck_weights: if truck_weights[0]+sum(bridge) 2023. 5. 4.
[프로그래머스] 파이썬 문제풀이 - 숫자 변환하기 첫 풀이 1. DFS와 BFS로 풀었더니 시간초과가 났다 너무 쉽게 풀긴했다 2. 가지치기가 필요한데 더이상 해줄게 없다 def solution(x, y, n): def DFS(x,l): global cnt if x==y and cnt>l: cnt=l if x>y: return DFS(x+n,l+1) DFS(x*2,l+1) DFS(x*3,l+1) if x%2==0 and y%2==1 and n%2==0: return -1 global cnt cnt=9999 DFS(x,0) if cnt==9999: return -1 else: return cnt from collections import deque def solution(x, y, n): answer = 0 q=deque() q.append((x,0)) .. 2023. 5. 4.
[프로그래머스] SQL 문제풀이 - 오랜 기간 보호한 동물(1) https://school.programmers.co.kr/learn/courses/30/lessons/59044 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다. 내 풀이 1. left join으로 왼쪽 테이블 중심으로 합친다 2. limit으로 출력개수를 제한한다 SELECT i.NAME,i.DATETIME from ANIMAL_INS i left join ANIMAL_OUT.. 2023. 4. 28.
728x90