백준 알고리즘/Python 15

[알고리즘] 그리디 알고리즘 - 백준 1931 파이썬 문제풀이: 회의실 배정

백준 1931 파이썬 문제풀이: 회의실 배정 1931번 문제의 내용은 아래와 같습니다. 회의실 배정 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 ..

[알고리즘] 그리디 알고리즘 - 백준 11047 파이썬 문제풀이: 동전 0

백준 11047번 : 그리디 알고리즘 '동전 0' 문제 파이썬 문제풀이 문제 풀이에 앞서서, 그리디 알고리즘에 대한 설명은 아래에 있습니다. 참고하시길...! 2022.12.21 - [백준 알고리즘] - [알고리즘] 그리디 알고리즘 [알고리즘] 그리디 알고리즘 백준 알고리즘 문제들을 풀면서, 단순히 코드를 작성하고 문제만 푸는 것이 아니라 알고리즘 공부도 병행하면서 해야겠다는 필요성을 느꼈다. 그 첫번째 시작이 이번 그리디 알고리즘이다. 그 inho3213.tistory.com 11047번 문제의 내용은 아래와 같습니다. 동전 0 문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최..

[알고리즘] 그리디 알고리즘

백준 알고리즘 문제들을 풀면서, 단순히 코드를 작성하고 문제만 푸는 것이 아니라 알고리즘 공부도 병행하면서 해야겠다는 필요성을 느꼈다. 그 첫번째 시작이 이번 그리디 알고리즘이다. 그리디 알고리즘이란? 그리디 알고리즘이란 그 이름 Greedy 에서 알 수 있듯이 매 선택의 순간마다 현재 상황에서 당장 최적인 답을 선택하는 방법을 의미한다. 쉽게 말하면 먼 미래를 생각하는게 아니라, 당장 눈 앞에 보이는 최적의 선택을 하는 방식이다. 이런 그리디 알고리즘은 일반적인 상황에서 최적의 해를 보장할 수 없을때가 많다. 하지만 이런 그리디 알고리즘을 적용했을 때 최적의 답을 보장해주는 알고리즘 문제들이 몇 있기에, 그 문제들 유형을 정리해놓는 것이 필요하다고 생각했다. 그리디 알고리즘 문제는 다음 포스팅부터 살펴..

파이썬 - 순열과 조합 라이브러리

1. 순열 파이썬에서 순열을 사용하려면 permutations 라이브러리를 사용해야한다. 만약 위와 같이 'A', 'B', 'C'를 원소로 가진 리스트가 있을때 list(permutations(data,2)) 를 사용한다면 data의 원소들 중 서로다른 2개를 선택해 나열하는 모든 경우의 수를 리턴하게 된다. (즉 순열에서 3P2와 같은 의미) 따라서 다음과 같은 결과값을 얻을 수 있다. 1-1. 중복 순열 중복 순열에서는 위의 permutations 대신 product를 사용한다. 2. 조합 파이썬에서 조합을 사용하려면 combinations 라이브러리를 사용해야한다. 이번에도 위의 순열 부분과 동일하게 똑같은 원소의 list를 가지고 있을때 list(combinations(data,2)) 를 사용하게..

파이썬 sorted 내장 함수

1. sorted() : 원소들을 정렬한 결과를 반환하는 함수 예를 들어 [2, 7, 3, 9]와 같은 리스트가 있다고 할때 sorted 함수를 사용해준다면 자동으로 오름차순으로 정렬해줌. 실행결과) *만약 내림차순의 결과가 필요하다면? 'reverse = True' 사용 1-1. key값을 이용한 sorted() 위의 sorted 함수는 key 값을 이용해서도 정렬이 가능하다. 예를 들어, 위와 같이 튜플 형식의 원소들을 가지고 있는 리스트가 있다고 할때, 각 튜플의 두번째 값인 숫자들을 기준으로 정렬을 하고 싶다면 위와 같이 key 값을 이용해서 정렬할 수 있다. 실행결과)