코딩 기록소
[Python 알고리즘] 백준 11000번 : 강의실 배정
Python 알고리즘 2022. 2. 4. 22:49

문제 수강신청의 마스터 김종혜 선생님에게 새로운 과제가 주어졌다. 참고로, 수업이 끝난 직후에 다음 수업을 시작할 수 있다. (즉, Ti ≤ Sj 일 경우 i 수업과 j 수업은 같이 들을 수 있다.) 수강신청 대충한 게 찔리면, 선생님을 도와드리자! 김종혜 선생님한테는 Si에 시작해서 Ti에 끝나는 N개의 수업이 주어지는데, 최소의 강의실을 사용해서 모든 수업을 가능하게 해야 한다. 입력 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) # Case 1 3 1 3 2 4 3 5 출력 강의실의 개수를 구해라 # Case 1 2 내가 제출한 풀이 - Heap에 대해 공부 후 품 import sys import heap..

article thumbnail
[Python 알고리즘] 백준 1783번 : 병든 나이트
Python 알고리즘 2022. 2. 3. 22:06

문제 병든 나이트가 N × M 크기 체스판의 가장 왼쪽아래 칸에 위치해 있다. 병든 나이트는 건강한 보통 체스의 나이트와 다르게 4가지로만 움직일 수 있다. 2칸 위로, 1칸 오른쪽 1칸 위로, 2칸 오른쪽 1칸 아래로, 2칸 오른쪽 2칸 아래로, 1칸 오른쪽 병든 나이트는 여행을 시작하려고 하고, 여행을 하면서 방문한 칸의 수를 최대로 하려고 한다. 병든 나이트의 이동 횟수가 4번보다 적지 않다면, 이동 방법을 모두 한 번씩 사용해야 한다. 이동 횟수가 4번보다 적은 경우(방문한 칸이 5개 미만)에는 이동 방법에 대한 제약이 없다. 체스판의 크기가 주어졌을 때, 병든 나이트가 여행에서 방문할 수 있는 칸의 최대 개수를 구해보자. 입력 # Case 1 100 50 # Case 2 1 1 # Case 3 ..

[Python 알고리즘] 백준 10610번 : 30
Python 알고리즘 2022. 2. 2. 16:57

문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. # Case 1 30 # Case 2 102 # Case 3 2931 # Case 4 80875542 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는다면, -1을 출력하라. # Case 1 30 # Case 2 210 # Case 3 -1 # Case 4 88755420 내가 제출한 풀이 - 틀림 i..

[Python 알고리즘] 백준 2875번 : 대회 or 인턴
Python 알고리즘 2022. 2. 1. 11:16

문제 백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.)백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다. 여러분은 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야하는 인원 K가 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다. 백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다. 입력 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N) #..

[Python 알고리즘] 백준 11047번 : 동전 0
Python 알고리즘 2022. 1. 31. 14:11

문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 첫번째 케이스 10 4200 1 5 10 50 100 500 1000 5000 10000 50000 두번째 케이스 10 4790 1 5 10 50 100 500 1000 5000 10000 50000 출력 첫째 줄에 K원을 만드는데 필요..

[Python] 구현 및 시뮬레이션 알고리즘을 파헤쳐 보자! (문자열 재정렬)
Python 알고리즘 2022. 1. 28. 17:07

문제 알파벳 대문자와 숫자(0 ~ 9)로만 구성된 문자열이 입력으로 주어집니다. 이 때 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 이어서 출력합니다. ㅇ를 들어 K1KA5CB7이라는 값이 들어오면 ABCKK13을 출력합니다. 입력 K1KA5CB7 출력 ABCKK13 내가 제출한 풀이 - 정답 import sys import re # 숫자 제거한 오름차순 문자 리스트 s = sys.stdin.readline().strip() word_list = sorted((re.sub("\d", "", s))) # 문자 제거한 숫자 num = re.sub("[a-zA-Z]", "", s) sum_res = 0 for n in num: sum_res += int(n) pri..

article thumbnail
[Python] 구현 및 시뮬레이션 알고리즘을 파헤쳐 보자! (왕실의 나이트)
Python 알고리즘 2022. 1. 27. 23:40

문제 행복 왕구의 왕실 정원은 체스판과 같은 8 x 8 좌표 평면입니다. 왕실 정원의 특정한 한 칸에 나이트가 서 있습니다. 나이트는 말을 타고 있기 때문에 이동을 할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없습니다. 나이트는 특정 위치에서 다음과 같은 2가지 경우로 이동할 수 있습니다. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기 c2에 있을 떄 이동할 수 있는 경우의 수는 6가지입니다. a1에 있을 떄 이동할 수 있는 경우의 수는 2가지입니다. 입력 a1 출력 2 내가 제출한 풀이 - 구현실패 (방향 벡터 선언된 걸 보고 풀음) 방향 벡터를 사용하는 것은 알고 있었으나, 2차원 배열에서 한 리스트당 동 서 남 북으로 ..

[Python] 구현 및 시뮬레이션 알고리즘을 파헤쳐 보자! (시각)
Python 알고리즘 2022. 1. 26. 23:24

문제 정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하세요. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각입니다. 00시 00분 03초 00시 13분 30초 반면에 다음은 3이 하나도 포함되어 있지 않으므로 세면 안 되는 시각입니다. 00시 02분 55초 01시 27분 45초 입력 5 출력 11475 내가 제출한 풀이 - 정답 import sys n = int(sys.stdin.readline().strip()) result = 0 for i in range(0, n + 1): # 1시간이 3600초 if i % 10 == 3: result += 3600 cont..