본문 바로가기

Python8

[Algorithm] 깊이우선탐색(DFS) 과 너비우선탐색(BFS) DFS 와 BFS 는 각각 Depth-First Search 와 Breadth-First Search 로, 깊이우선탐색과 너비우선탐색을 뜻한다. 둘의 차이점과 코드 구현 방법을 구체적으로 알아보고자 한다. BFS 그래프 자료구조형에서 가장 가까운 노드부터 우선적으로 탐색하는 알고리즘이다. 큐를 이용하여 구현할 수 있다. 구현 단계 큐에 탐색 시작 노드를 삽입한다. 큐의 front 를 방문할 때마다 방문 표시를 하고, popleft() 를 한다. 현재 방문하고 있는 노드에 방문하지 않은 인접 노드가 있다면 그 노드를 큐에 넣는다 현재 방문하고 있는 노드에 방문하지 않은 인접 노드가 없다면 큐의 front 을 꺼낸다 반복 실행하여 큐가 완전히 빌 때 종료한다 from collections import deq.. 2021. 6. 30.
[Python] Imaplib을 사용하여 이메일 읽고쓰기 현재 수강하고 있는 웹개발 코스에서는 페어와의 협업 과제가 끝날 때마다 상호평가 내용을 이메일로 보내준다. 정리벽이 도져서 하나하나 다 긁어 정리해볼까 싶었는데, 매번 내용을 직접 긁어 와서 정리하기가 번거롭고, 귀찮았다. ✨ ✨ 그러다 왠지 파이썬 코드를 작성하면 매우 간단한 작업이 될 것 같다는 생각이 들었다. Python 을 능숙하게 다루지는 않지만, 여러 모듈을 써 본다면 이 모든 리뷰 메일을 한 번에 모아서 내가 원하는 형태의 파일로 저장할 수 있는 방법이 있을 것 같았다. 그래서 알아본 것이 바로 python 의 imaplib 모듈이다. 이번 글은 개인 자동화 프로젝트를 진행하는데 배운 내용과 작성한 코드를 중점으로 정리해본다. 파이썬의 가장 큰 장점 중 하나는 손쉬운 모듈 및 라이브러리의 활.. 2021. 6. 23.
[프로그래머스] 스택/큐(Stack/Queue) : 주식가격 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한 사항 - prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. - prices의 길이는 2 이상 100,000 이하입니다. 입출력 예 Prices Return [1,2,3,2,3] [4,3,1,1,0] 입출력 예 설명 - 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. - 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. - 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. - 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. - 5초 .. 2021. 5. 7.
[프로그래머스] 스택/큐(Stack/Queue): 다리를 지나는 트럭 문제 설명 트럭 여러 대가 강을 가로지르는 일 차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 트럭은 1초에 1만큼 움직이며, 다리 길이는 bridge_length이고 다리는 무게 weight까지 견딥니다. ※ 트럭이 다리에 완전히 오르지 않은 경우, 이 트럭의 무게는 고려하지 않습니다. 예를 들어, 길이가 2이고 10kg 무게를 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 따라서, 모든 트럭이 다리를 지나려면 최소 8초가 걸립니다. solution 함수의 매개변수로 다리 길이 bridge_length, 다리가 견딜 수 있는 무게 weight, 트럭.. 2021. 5. 7.
[프로그래머스] 스택/큐(Stack/Queue): 프린터 문제 설명 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 예를 들어, 4개의 문서(A, B, C, D)가 순서대로 인쇄 대기목록에 있고 중요도가 2 1 3 2 라면 C D A B 순으로 인쇄하게 됩니다. 내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 .. 2021. 5. 7.
[프로그래머스] 스택/큐(Stack/Queue): 기능개발 문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 - 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. - 작업 진도는 100 미만의 자연수입니다. - 작업 속도는 100.. 2021. 5. 7.
[백준] 1003번: 피보나치 함수 최근에 백준에 출제된 문제들을 풀기 시작했다. 백준에서 두 번째로 푼 문제는 피보나치 함수였는데, 해당 문제를 푸는 과정에서 배운 점들이 몇 가지 있어 기록차 남겨두고자 한다. 문제의 지문은 다음과 같았다. 문제 다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. fibonacci(3)은 fibonacci(2)와 fibonacci(1) (첫 번째 호출)을 호출.. 2021. 3. 11.
[Python] sort() 함수와 오름차순 정렬 Q: Sort() 없이도 리스트를 오름차순으로 정렬할 수 있을까? 국비교육 1주차 때 들었던 파이썬 기본 강의에서 나왔던 예제를 다시 가져와 보았다. 사용자에게 로또 몇 개를 구매할 것인지 물어보고, 사용자가 입력한 로또 갯수별로 1-45 사이의 숫자 6개를 무작위로 뽑아라. 예) 로또 3개 -> 6개의 무작위 숫자를 총 3 묶음 출력 묶음을 오름차순으로 정렬해서 출력하라. 당시 강의 내용에 sort() 함수가 포함되지 않았기 때문에, sort() 함수를 쓰지 않고 풀었었다. (사실 구글링으로 sort()을 찾아 쓰긴 했으나 배운 범위 내에서도 풀 수 있을 것이라 생각해서 어렵게 돌아갔다) 그 때 내가 생각할 수 있었던 최선의 풀이는 다음과 같았다. import random lotto = int(inpu.. 2020. 12. 22.