Category 179

[이분탐색] 백준 6236. 용돈관리

문제 바로가기 문제 해석 하루 사용하는 금액과, 돈을 인출할 수 있는 횟수가 주어짐. 인출 횟수를 꼭 맞추고 하루 돈 소비량을 충족시킬 수 있는 최소 인출금액(mid로 탐색)을 구해라. 단, 인출 금액은 고정되고 돈이 부족하면(오늘 쓸 돈이 더 많으면) 입금했다가 재인출 주요 변수 기간 : n 인출 횟수 : m 매일 쓰는 금액 : cost list 탐색범위 low : 매일 쓰는 금액의 최대값으로 맞춰준다, 문제 조건 N

⚡️algorithm 2022.05.16

[문자열, 파이썬] 최장 공통 부분 문자열

LCS(Longest Common Substring) 최장 공통 부분 문자열로, 공통 문자열 중 가장 길이가 긴 것을 찾아내는 알고리즘이다. DP나 Graph 문제 풀 때 비슷한 문제를 꽤나 풀었던 거 같은데, 다시 푸니 아예 생각이 안났다. for문을 두 번 쓰는 건 알겠는데, 이차원 그래프를 돌며 각 인덱스에 해당하는 문자를 비교해서 값을 넣는 방식이 어색하다. 기본 문제이기 때문에 자꾸 연습해서 머리를 컴퓨터 방식에 적응되도록 해야겠다 @ㅅ@ a, b = map(list, input().split()) g = list([0]*(len(b)+1) for _ in range(len(a)+1)) ans = 0 for i in range(1,len(a)+1): for j in range(1,len(b)+1..

⚡️algorithm 2022.05.15

[이분탐색] 백준 2512. 예산

https://www.acmicpc.net/problem/2512 예산의 기준상한액을 출력해라. 틀렸는데, 왜 틀렸는 지 모르겠다. 상한액이 e값으로 결정된다. 예시로는 맞는데, ans 할당하는 부분이 틀렸었다. 틀린 코드 from re import S import sys from collections import Counter sys.stdin = open('C:\\tech\\backjoon\\binary\\input.txt','r') input = sys.stdin.readline n = int(input()) arr = Counter(map(int, input().split())) limit = int(input()) # 상한액을 출력하라 ans def getMoney(m): t = 0 for i ..

⚡️algorithm 2022.05.13

[이분탐색] 백준 2805. 나무자르기

문제 https://www.acmicpc.net/problem/2805 이분탐색인 걸 알아보고, 풀어야지만 맞을 수 있는 문제였다. 내 코드는 아무리 개선을 해도, pypy에서만 시간초과가 안 났고, 다른 분 코드를 보니 collections 모듈의 Counter 클래스를 임포트했더라. counter 임포트 보다 나무 자른 길이의 합을 한줄 sum으로 표현한 게 결정적이었다. Counter collections 모듈의 Counter 클래스 https://www.daleseo.com/python-collections-counter/ https://docs.python.org/3/library/collections.html#collections.Counter Counter 클래스는 배열의 값들을 dictio..

⚡️algorithm 2022.05.13

[그리디] 백준 13904. 과제 (feat. heapq)

문제 마감기한 안에 과제를 하루에 하나씩 할 수 있을 때, 최대 점수를 구하라 다른분 코드 보고 플옸다... 하루에 하나씩 풀되, 높은 점수인 거만 고르면 되는 줄 알았는데 기한이 빠른 걸 하는 게 중요한 게 아니고 점수가 높은걸 해야하는 거였다. 예를 들어, 마감기한, 점수할당 1 10 3 30 3 30 3 50 으로 주어졌을 때, 1인 것부터 하는 게 아니라 3인거 3개로 채워야 함. 따라서 value로 sorting 해서 꺼내는 게 포인트였다. 어떤 분은 마감기한 끝 부터 하던데, 이 풀이가 더 의도에 부합하는 것 같다. 나는 while day 로 풀다가 실패했는데, 이 방식으로도 다시 풀어봐야겠다. import sys sys.stdin = open('.//그리디//input3.txt','rt') ..

⚡️algorithm 2022.05.11

[그리디] 백준 1700. 플러그

플러그 자리 없으면 뽑는 건데, 젤 적게 뽑을 때의 횟수 구해라 포인트는, 1. 플러그 검사해서, 꽉차면 하나 뽑고 시작해 (* 대신에 맨마지막에서는 안뽑아야함) 2. 플러그 꽂을 때는, 이미 꽂혀있는 건지 검사 3. 플러그 뽑을 때, 더 나중에 꽂아야 하는 애를 뽑아야함. (어려움, index 크기 비교로 풀었음) n, k = map(int, input().split()) lst = list(map(int, input().split())) plug = [] cnt = 0 for idx in range(k): i = lst[idx] later = -1 res = lst[idx+1:] id = 0 if i in plug: continue while len(plug) == n and id < n and id..

⚡️algorithm 2022.05.11

[그리디, 파이썬] 백준 11000. 강의실 배정

문제 : 강의실 가장 적게 써라 수강신청의 마스터 김종혜 선생님에게 새로운 과제가 주어졌다. 김종혜 선생님한테는 Si에 시작해서 Ti에 끝나는 N개의 수업이 주어지는데, 최소의 강의실을 사용해서 모든 수업을 가능하게 해야 한다. 참고로, 수업이 끝난 직후에 다음 수업을 시작할 수 있다. (즉, Ti ≤ Sj 일 경우 i 수업과 j 수업은 같이 들을 수 있다.) 수강신청 대충한 게 찔리면, 선생님을 도와드리자! 입력 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) 출력 강의실의 개수를 출력하라. heapq 라이브러리 없이는 못푸는 문제..! 가장 빨리 끝나는 강의실에 순서대로 넣어줘야 함 import sys imp..

⚡️algorithm 2022.05.10