프로그래머스

알고리즘(algo)/프로그래머스

[프로그래머스] DFS/BFS - 단어 변환

참고: https://school.programmers.co.kr/learn/courses/30/lessons/43163 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 1번 예제에 맞게 그러보면 begin이 target이 되는 최소 횟수는 hot 부터 cog가 되는 총 4번의 과정만에 target과 같아질 수 있다. from collections import deque def solution(begin, target, words): answer = 0 q = deque([begin]) while q: if target not in words: break v = q.popleft() answer += 1 print(v) if v == target: break if v[0]+v[1] == target[0]+ta..

알고리즘(algo)/프로그래머스

[프로그래머스] 구현 - 콜라문제

참고: https://school.programmers.co.kr/learn/courses/30/lessons/42862 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 다음과 같이 빈병 a(2)개를 가져다주면 b(1)개씩 돌려주는 마트가 있는데, 계속해서 받는 병과 빈병을 나누다보면 최종적으로 몇 병까지 받을 수 있는가에 대해서 출력하는 문제이다. n이 20에서 출발해 2으로 계속 나누다보면 10,5,2,1까지 병을 받을 수 있는데, 3번째 과정에서 한 개의 병이 남는 것을 확인할 수 있고 이것을 기억해두었다가 마지막에 남는 1병과 더해서 추가로 1병을 더 받게 된다. 그러면 10+5+2+1+1로 해서 총 19개의 병을 받을 수 있게 된다. def solution(a, b, n): answer = 0 whi..

알고리즘(algo)/프로그래머스

[프로그래머스] 스택/큐 - 기능개발

참고: https://school.programmers.co.kr/learn/courses/30/lessons/42586 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 진척도가 100을 기준으로 하여 각각 주어지고, 각 진척도에 맞는 속도가 배열 형태로 주어진다. 1) 예제 1은 100에서 각 진척도를 뺀 7, 70, 45가 있다고 하면, 속도에 맞게 7일, 3일, 9일이 각각 걸린다고 볼 수 있다. 3일 걸리는 것은 7일 이후에 함께 배포되기 때문에 같은 날 2개가 배포되고, 나머지는 9일째에 1개가 배포되어 return이 [2,1]이 된다. 2) 예제 2는 100에서 각 진척도를 뺀 5, 10, 1, 1, 20 ,1이 있다고 하면, 속도에 맞게 5일, 10일, 1일, 1일, 20일, 1일이 각각 걸린다고..

알고리즘(algo)/프로그래머스

[프로그래머스] 해시 - 전화번호 목록

참고: https://school.programmers.co.kr/learn/courses/30/lessons/42577 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 가장 먼저 제한 사항을 보고 든 생각은 시간 복잡도이다. 2중 for문을 돌게 되면 아무래도 최악의 경우에 시간 초과에서 걸릴 것 같다는 생각이 들었다. 전체 리스트의 길이가 100만 이하이기 때문이다. def solution(phone_book): phone_book.sort() for i in range(len(phone_book)-1): if len(phone_book[i]) < len(phone_book[i+1]): if phone_book[i+1][:len(phone_book[i])] == phone_book[i]: return Fa..

알고리즘(algo)/프로그래머스

[프로그래머스] 탐욕법(Greedy) - 체육

참고: https://school.programmers.co.kr/learn/courses/30/lessons/42862 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 그림이 조금 못생겼지만, 다음과 같이 설명할 수 있다. 1) 2번과 4번 학생이 체육복을 잃어버렸지만, 1에 인접한 2에게 체육복을 주고, 3에 인접한 2와 4에게 체육복을 주고, 5에 인접한 4에게 체육복을 줌으로써 총 5명이 체육수업을 들을 수 있다. 2) 2번과 4번 학생이 체육복을 잃어버렸지만, 3에 인접한 2와 4에게 체육복을 줌으로써 총 5명이 체육수업을 들을 수 있다. 3) 3번 학생이 체육복을 잃어버렸는데, 3에 인접한 수가 없기 때문에 총 2명이 체육수업을 들을 수 있다. 이 외에도 여러가지 반례를 생각해보았다. 1) n이 5..

알고리즘(algo)/SQL

[SQL] 자동차 평균 대여 기간 구하기

참고: https://school.programmers.co.kr/learn/courses/30/lessons/157342 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 조건을 보고나서 떠오른 풀이 방법은 다음과 같다. 1) 평균 대여 기간은 DATEDIFF 함수를 사용하여 날짜의 차이를 CAR_ID 별로 모두 더한 값에서 CAR_ID의 갯수로 나눈 값이 된다. 2) GROUP BY 절로 CAR_ID의 중복을 제거하고, HAVING 조건으로 앞서 만든 평균 대여 기간의 7 이상인 값만 가져온다. 3) 평균 대여 기간과 자동차 ID를 ORDER BY DESC로 내림차순 정렬한다. SELECT CAR_ID, ROUND(SUM(DATEDIFF(END_DATE, START_DATE)+1)/COUNT(CAR_ID),..

dDong2
'프로그래머스' 태그의 글 목록