본문 바로가기

코딩테스트70

[Python] 마구간 정하기(결정알고리즘) 문제 N개의 마구간이 수직선상에 있습니다. 각 마구간은 x1, x2, x3, ..., xN의 좌표를 가지며, 마구간에 좌표가 중복되는 일은 없습니다. 현수는 C마리의 말을 가지고 있는데, 이 말들은 서로 가까이 있는 것을 좋아하지 않습니다. 각 마구간에는 한 마리의 말만 넣을 수 있고, 가장 가까운 두 말의 거리가 최대가 되게 말을 마구간에 배치하고 싶습니다. C마리의 말을 N개의 마구간에 배치했을 때 가장 가까운 두 말의 거리가 최대가 되는 그 최대값을 출력하는 프로그램을 작성하세요. 입력설명 첫 줄에 자연수 N(3 2024. 4. 15.
[코딩테스트] 뮤직비디오(결정알고리즘) 문제 지니레코드에서는 불세출의 가수 조영필의 라이브 동영상을 DVD로 만들어 판매하려 한다. DVD에는 총 N개의 곡이 들어가는데, DVD에 녹화할 때는 라이브에서의 순서가 그대로 유지되어야 한다. 순서가 바뀌는 것을 우리의 가수 조용필씨가 매우 싫어한다. 즉, 1번 노래와 5번 노래와 같은 DVD에 녹화하기 위해서는 1번과 5번 사이의 모든 노래도 같은 DVD에 녹화해야한다. 지니레코드 입장에서는 이 DVD가 팔릴 것인지 확신할 수 없기 때문에 이 사업에 낭비되는 DVD를 가급적 줄이려고 한다. 고민 끝에 지니레코드는 M개의 DVD에 모든 동영상을 녹화하기로 하였다. 이 때 DVD의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 그리고 M개의 DVD는 모두 같은 크기여야 제조원가가 적게 들기 때문에 .. 2024. 4. 13.
[코딩테스트] 2. 랜선 자르기(결정 알고리즘) 문제 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이다. N개의 같은 길이의 랜선으로 만들고 K개의 랜선을 잘라서 만들어야 한다. Ex. 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm는 버려야한다. 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 하자. 그리고 자를 때는 항상 센티미터 단위로 정수 길이만큼 자른다고 가정하자. N개보다 많이 만드는 것도 N개를 만드는 것에 포함된다. 이때 만들 수 있는 최대 랜선의 길이를 구하는 프로그램을 작성하시오. 입력설명 첫째 줄에는 엘리트 학원이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1 이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정.. 2024. 4. 10.
[코딩테스트] 섹션 4-1. 이분 검색 강의명 : 파이썬 알고리즘 문제풀이 입문(코딩테스트 대비) 문제 임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수 중, 한 개의 수인 M이 주어지면 이분탐색으로 M이 정렬된 상태에서 몇 번째에 있는지 구하는 프로그램을 작성하세요. 입력 설명 첫 줄에 한 줄에 자연수 N(3 m 이라면, 중간보다 이전에 있는 것. 이전~중간 범위 확인 rt = mid - 1 a[mid] < m 이라면, 중간보다 이후에 있는 것. 중간~이후 범위 확인 lt = mid + 1 이런 식으로 하면, 절반씩 툭툭 나가 떨어짐. 유효범위가 반씩 줄어드는 것. 처음에 정렬된 상태의 문자열이 필요함. log N 번만에 이분 검색이 된다. import sys sys.stdin = open('inpu.. 2024. 4. 9.
[이것이 코딩테스트다] p.240 우선 순위 큐 우선순위 큐 : 우선순위가 가장 높은 데이터를 가장 먼저 삭제한다는 점이 특징. 추출되는 데이터 스택 : 가장 나중에 삽입된 데이터 큐 : 가장 먼저 삽입된 데이터 우선순위 큐 : 가장 우선순위가 높은 데이터 이러한 우선순위 큐는 데이터를 우선순위에 따라 처리하고 싶을 때 사용한다. 예를 들어 여러 개의 물건 데이터를 자료구조에 넣었다가 가치가 높은 물건 데이터부터 꺼내서 확인해야 하는 경우를 가정 -> 우선순위 큐 자료구조를 이용하면 효과적임 우선순위 값을 표현할 때는 일반적으로 정수형 자료형의 변수가 사용됨. 물건 정보 -> 물건의 가치, 물건의 무게로만 구성된다면 모든 물건 데이터를 (가치, 물건)으로 묶어서 우선순위 큐 자료구조에 넣을 수 있는 것. 물건을 꺼내게 되면, 항상 가치가 높은 물건이 .. 2024. 4. 8.
[이것이 코딩테스트다] Q 08. 문자열 재정렬 알파벳과 대문자와 숫자로만 구성돋니 문자열이 입력으로 주어집니다. 모든 알파벳을 오름차순으로 정렬하여 이어서 출력한 뒤에, 그 뒤에 모든 숫자를 더한 값을 출력합니다. n = input() new = sorted(n) num = [int(i) for i in new if i.isdigit() ] alpha = [i for i in new if not i.isdigit() ] alpha.append(str(sum(num))) print("".join(alpha)) 문자열 입력받고, 오름차순으로 정렬 숫자로만 구성되어 있는 배열 num 문자로만 구성되어 있는 배열 alpha alpha에 배열 num의 총합을 문자열로 바꿔서 append 문자오름차순+숫자합으로 이루어진 alpha 리스트를 문자열로 변경 2024. 3. 26.