Algorithm/Sort 8

[Python] 백준 31650번 Maximizing Productivity

문제https://www.acmicpc.net/problem/31650입력The first line consists of N and Q.The second line consists of  c_1, c_2, c_3, ..., c_N (1 ≤ c_i ≤ 10^6).The third line consists of t_1, t_2, t_3, ..., t_N (1 ≤ t_i ≤ 10^6).The next Q lines each consist of two integers V (1 ≤ V ≤ N) and S (1 ≤ S ≤ 10^6).출력For each of the Q queries, output YES or NO on a new line.입력 예제5 53 5 7 9 124 2 3 3 81 51 63 34 25 1출..

Algorithm/Sort 2024.10.05

[Python] 카드 정렬하기

문제 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장의 숫자 카드 묶음을 합치려면 50번의 비교가 필요하다. 매우 많은 숫자 카드 묶음이 책상 위에 놓여 있다. 이들을 두 묶음씩 골라 서로 합쳐나간다면, 고르는 순서에 따라서 비교 횟수가 매우 달라진다. 예를 들어 10장, 20장, 40장의 묶음이 있다면 10장과 20장을 합친 뒤, 합친 30장 묶음과 40장을 합친다면 (10 + 20) + (30 + 40) = 100번의 비교가 필요하다. 그러나 10장과 40장을 합친 뒤, 합친 50장 묶음과 20장을 합친다면 (10 + 40) + (50 + 20)..

Algorithm/Sort 2023.01.25

[Python] 실패율

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 실패율을 계산해서 배열에 저장한다 (실패율 0인 경우도 따로 처리 해서 저장해야 함) 배열 내림차순으로 정렬 배열의 0번째 원소 (스테이지 번호) 만 출력 코드 def solution(N, stages): length = len(stages) answer = [] for i in range(1, n + 1): count = stages.count(i) # 실패율 0인 경우 처리 if length == 0: fail = 0 else: fail = count / length # 실패율 계산 ans..

Algorithm/Sort 2023.01.25

[Python] 안테나

문제 일직선 상의 마을에 여러 채의 집이 위치해 있다. 이중에서 특정 위치의 집에 특별히 한 개의 안테나를 설치하기로 결정했다. 효율성을 위해 안테나로부터 모든 집까지의 거리의 총 합이 최소가 되도록 설치하려고 한다. 이 때 안테나는 집이 위치한 곳에만 설치할 수 있고, 논리적으로 동일한 위치에 여러 개의 집이 존재하는 것이 가능하다. 집들의 위치 값이 주어질 때, 안테나를 설치할 위치를 선택하는 프로그램을 작성하시오. 예를 들어 N=4이고, 각 위치가 1, 5, 7, 9일 때를 가정하자. 이 경우 5의 위치에 설치했을 때, 안테나로부터 모든 집까지의 거리의 총 합이 (4+0+2+4)=10으로, 최소가 된다. 입력 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집..

Algorithm/Sort 2023.01.22

[Python] 국영수

문제 도현이네 반 학생 N명의 이름과 국어, 영어, 수학 점수가 주어집니다. 이때, 다음과 같은 조건으로 학생의 성적을 정렬하는 프로그램을 작성하세요. 1. 국어 점수가 감소하는 순서로 2. 국어 점수가 같으면 영어 점수가 증가하는 순서로 3. 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로 4. 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키코드에서 대문자는 소문자보다 작으므로 사전 순으로 앞에 옵니다.) 입력 첫째 줄에 도현이네 반의 학생 수 N (1 수학 -> 이름 for _ in range(n): array.append(list(input().split())) array.sort(key = lambda x:(-int(x[1]),int(x[2]),-int(x[3])..

Algorithm/Sort 2023.01.22

[Python] 두 배열의 원소 교체

문제 동빈이는 두 개의 배열 A와 B를 가지고 있다. 두 배열은 N개의 원소로 구성되어 있으며 배열의 원소는 모두 자연수이다 동빈이는 최대 K번의 바꿔치기 연산을 수행할 수 있는데, 바꿔치기란 배열 A에 있는 원소 하나와 배열 B에 있는 원소 하나를 골라서 두 원소를 서로 바꾸는 것을 말한다 동빈이의 최종 목표는 배열 A의 모든 원소의 합이 최대가 되도록 하는 것이며, 여러분은 동빈이를 도와야한다 입력 5 3 1 2 5 4 3 5 5 6 6 5 출력 26 문제 풀이 A 배열 오름차순으로 정렬 B 배열 내림차순으로 정렬 A 배열의 원소 값이 B 배열의 원소 값보다 작다면 두 원소를 바꾼다 A 배열의 모든 원소 값을 더한 값 출력 코드 n, k = map(int,input().split()) a = list..

Algorithm/Sort 2023.01.20

[Python] 성적이 낮은 순서로 학생 출력하기

문제 N명의 학생 정보가 있다 학생 정보는 학생의 이름과 학생의 성적으로 구분된다 각 학생의 이름과 성적 정보가 주어졌을 때 성적이 낮은 순서대로 학생의 이름을 출력하는 프로그램을 작성하시오 입력 2 홍길동 95 이순신 77 출력 이순신 홍길동 문제 풀이 array[1] 인 성적별로 오름차순 정렬 array[0] 번째 값 들만 출력 코드 n = int(input()) array = [] for i in range(n): array.append(input().split()) array = sorted(array, key=lambda score:score[1]) for student in array: print(student[0], end = ' ')

Algorithm/Sort 2023.01.20

[Python] 위에서 아래로

문제 하나의 수열에는 다양한 수가 존재한다. 이러한 수는 크기에 상관없이 나열되어 있다. 이 수를 큰 수부터 작은 수의 순서로 정렬해야 한다. 수열을 내림차순으로 정렬하는 프로그램을 만드시오 입력 3 15 27 12 출력 27 15 12 문제 풀이 입력받은 수를 배열에 저장한 후 역순으로 정렬 코드 n = int(input()) array = [] for i in range(n): array.append(int(input())) array.sort(reverse=True) for i in array: print(i, end=' ')

Algorithm/Sort 2023.01.20