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

알고리즘(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)/프로그래머스

[프로그래머스] 완전탐색 - 카펫

참고: https://school.programmers.co.kr/learn/courses/30/lessons/42842 ✔️ 문제 문제는 다음과 같다. ✔️ 풀이 예제에 나와있는 것 같이 10개의 갈색과 2개의 노란색이 주어졌을 때, 맨윗줄과 아랫줄 4개 및 왼쪽 오른쪽 1개씩 해서 10개이고 가운데에 노란색 2개가 들어가는데 이는 가로가 4, 세로가 3으로 이루어진 직사각형과 같다. def solution(brown, yellow): result = brown + yellow n = result // 2 data = [] for i in range(1, n+1): if result % i == 0: data.append(i) data.append(result//i) data = sorted(list(..

dDong2
'알고리즘(algo)/프로그래머스' 카테고리의 글 목록