백준 알고리즘 87

[알고리즘] 그리디 알고리즘 - 백준 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 에서 알 수 있듯이 매 선택의 순간마다 현재 상황에서 당장 최적인 답을 선택하는 방법을 의미한다. 쉽게 말하면 먼 미래를 생각하는게 아니라, 당장 눈 앞에 보이는 최적의 선택을 하는 방식이다. 이런 그리디 알고리즘은 일반적인 상황에서 최적의 해를 보장할 수 없을때가 많다. 하지만 이런 그리디 알고리즘을 적용했을 때 최적의 답을 보장해주는 알고리즘 문제들이 몇 있기에, 그 문제들 유형을 정리해놓는 것이 필요하다고 생각했다. 그리디 알고리즘 문제는 다음 포스팅부터 살펴..

백준 2480번 파이썬 문제풀이 : 주사위 세개 문제

백준 2480번 : 주사위 세개 파이썬 문제풀이 (조건문) 2480번 문제의 내용은 아래와 같습니다. 주사위 세개 문제 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다. 예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다...

백준 알고리즘 2022.11.23

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

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 값을 이용해서 정렬할 수 있다. 실행결과)

백준 2525번 : 오븐 시계 문제풀이 [파이썬]

백준 2525번 : 오븐 시계 파이썬 문제풀이 2525번 문제의 내용은 아래와 같습니다. 오븐 시계 문제 KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 분 단위로 자동적으로 계산한다. 또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을 알려 주는 디지털 시계가 있다. 훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때, 오븐구이가 끝나는 시각을 계산하는 프로그램을 작성하시오. 입력 첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A ..

백준 알고리즘 2022.11.03

백준 2884번 : 알람 시계 문제풀이 [파이썬]

백준 2884번 : 알람 시계 파이썬 문제풀이 2884번 문제의 내용은 아래와 같습니다. 알람 시계 문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 ..

백준 알고리즘 2022.10.28

백준 14681번 : 사분면 고르기 문제풀이 [파이썬]

백준 14681번 : 사분면 고르기 파이썬 문제풀이 14681번 문제의 내용은 아래와 같습니다. 사분면 고르기 문제 흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다. 점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다. 입력 첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정..

백준 알고리즘 2022.10.28

백준 2753번 : 윤년 문제풀이 [파이썬]

백준 2753번 : 윤년 문제풀이 [파이썬] 2753번 문제의 내용은 아래와 같습니다. 윤년 문제 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다. 입력 첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다. 출력 첫째 줄에 윤년이면 1, 아니면 0을 출력한다. 예제 입력 1 2000 예제 출력 1 1 예제 입력 2 1999 예제 출력 2 0..

백준 알고리즘 2022.10.28