본문 바로가기

알고리즘

(27)
백준 16439 - 치킨치킨치킨 문제N명의 고리 회원들은 치킨을 주문하고자 합니다.치킨은 총 M가지 종류가 있고 회원마다 특정 치킨의 선호도가 있습니다. 한 사람의 만족도는 시킨 치킨 중에서 선호도가 가장 큰 값으로 결정됩니다. 진수는 회원들의 만족도의 합이 최대가 되도록 치킨을 주문하고자 합니다.시키는 치킨의 종류가 많아질수록 치킨을 튀기는 데에 걸리는 시간도 길어지기 때문에 최대 세 가지 종류의 치킨만 시키고자 합니다.진수를 도와 가능한 만족도의 합의 최댓값을 구해주세요.입력첫 번째 줄에 고리 회원의 수 N (1 ≤ N ≤ 30) 과 치킨 종류의 수 M (3 ≤ M ≤ 30) 이 주어집니다.두 번째 줄부터 N개의 줄에 각 회원의 치킨 선호도가 주어집니다.i+1번째 줄에는 i번째 회원의 선호도 ai,1, ai,2, ..., ai,M ..
백준 1268 - 임시 반장 정하기 문제오민식 선생님은 올해 형택초등학교 6학년 1반 담임을 맡게 되었다. 오민식 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다. 그는 자기반 학생 중에서 1학년부터 5학년까지 지내오면서 한번이라도 같은 반이었던 사람이 가장 많은 학생을 임시 반장으로 정하려 한다.그래서 오민식 선생님은 각 학생들이 1학년부터 5학년까지 몇 반에 속했었는지를 나타내는 표를 만들었다. 예를 들어 학생 수가 5명일 때의 표를 살펴보자.                                                                        1학년               2학년               3학년               4학년   ..
백준 2870 - 수학숙제 문제상근이는 수학시간에 딴 짓을 하다가 선생님께 걸렸다. 선생님은 상근이에게 이번 주말동안 반성하라며 엄청난 숙제를 내주었다.선생님이 상근이에게 준 종이에는 숫자와 알파벳 소문자로 되어있는 글자가 N줄있다. 상근이는 여기서 숫자를 모두 찾은 뒤, 이 숫자를 비내림차순으로 정리해야한다. 숫자의 앞에 0이 있는 경우에는 정리하면서 생략할 수 있다.글자를 살펴보다가 숫자가 나오는 경우에는, 가능한 가장 큰 숫자를 찾아야 한다. 즉, 모든 숫자의 앞과 뒤에 문자가 있거나, 줄의 시작 또는 끝이어야 한다.예를 들어, 01a2b3456cde478에서 숫자를 찾으면 1, 2, 3456, 478이다.선생님이 준 종이의 내용이 주어졌을 때, 상근이의 숙제를 대신하는 프로그램을 작성하시오.입력첫째 줄에 종이의 줄의 개수 ..
백준 28292 - 개미 수열 문제대구소프트웨어마이스터고등학교에 다니고 있는 changwook987은 베르나르 베르베르의 소설 『개미』를 읽다가 흥미로운 수열을 보았다. 1,11,12,1121 ... 이 수열은 소설 『개미』에서 나와 개미 수열이라고 부르기도 하고 읽고 말하기 수열이라고 하기도 한다.이 수열의 규칙은 이렇다.첫 번째 항은 1이다.이전 항의 이웃한 같은 숫자들을 묶는다.이전 항이 1121일 경우 (1,1), (2), (1)묶인 숫자들의 숫자와 개수를 붙여 쓴다.묶인 숫자들이 (1,1), (2), (1) 일경우 122111이 된다.2, 3을 반복한다.이 개미 수열을 관찰하다 보면 수가 빠르게 길어지지만, 수를 이루는 숫자가 커지기는 쉽지 않다는 것을 알 수 있다.그렇다면 이 수열의 N번째 항의 자릿수 중에서 가장 큰 수는..
백준 11070 - 피타고라스 기댓값 문제유명한 피타고라스의 정리와 유사한 형태의 피타고라스 기댓값 (Pythagorean Expectation)이 야구와 같은 스포츠 경기에 자주 사용된다. 피타고라스 기댓값은 빌 제임스(Bill James)에 의해 정의되었으며, 이 값은 특정 야구팀이 한 시즌 동안 얼마나 잘 했는지를 평가하는 지표 중 하나로 사용된다. 한 야구팀의 피타고라스 기댓값 𝑊\(W\)는 아래 식과 같이 정의된다. 𝑊=𝑆2𝑆2+𝐴2\(W = \dfrac{S^2}{S^2 + A^2}\),여기서 𝑆\(S\)는 해당 팀의 총 득점 수를, 𝐴\(A\)는 해당 팀의 총 실점 수를 나타낸다.이 기댓값을 실제 승률과 비교하여, 해당 팀이 한 시즌을 얼마나 잘 보냈는지 평가할 수 있다. 예를 들어, 한화 이글스는 2014 시즌에 6..
백준 23899 - 알고리즘 수업 - 선택 정렬 5 문제오늘도 서준이는 선택 정렬 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자.N개의 서로 다른 양의 정수가 저장된 배열 A가 있다. 선택 정렬로 배열 A를 오름차순 정렬할 경우 정렬 과정에서 배열 A가 배열 B와 같은 경우가 발생하는지 확인해 보자. 초기 상태 배열 A도 정렬 과정에서 발생 가능한 경우로 생각하자.크기가 N인 배열에 대한 선택 정렬 의사 코드는 다음과 같다.selection_sort(A[1..N]) { # A[1..N]을 오름차순 정렬한다. for last A[i] # last와 i가 서로 다르면 A[last]와 A[i]를 교환 }}입력첫째 줄에 배열 A, B의 크기 N(5 ≤ N ≤ 10,000)이 주어진다.다음 줄에 서로 ..
백준 1274 - 부호 문제N개의 정수가 주어지면, 이 정수들의 합 S의 부호를 구하는 프로그램을 작성하시오.입력총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1 ≤ N ≤ 100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거나 같다.출력총 3개의 줄에 걸쳐 각 테스트 셋에 대해 N개의 정수들의 합 S의 부호를 출력한다. S=0이면 "0"을, S>0이면 "+"를, S예제 입력 1 복사3000101248163264128256-5126922337203685477580792233720368547758069223372036854775805-9223372036854775807-9223372036854775806-92233..
백준 1834 - 나머지와 몫이 같은 수 문제N으로 나누었을 때 나머지와 몫이 같은 모든 자연수의 합을 구하는 프로그램을 작성하시오. 예를 들어 N=3일 때, 나머지와 몫이 모두 같은 자연수는 4와 8 두 개가 있으므로, 그 합은 12이다.입력첫째 줄에 2,000,000 이하의 자연수 N이 주어진다.출력첫 줄에 구하고자 하는 수를 출력한다.예제 입력 1 복사3예제 출력 1 복사12예제 입력 2 복사2000000예제 출력 2 복사3999999999999000000 # 백준/브론즈1/나머지와 몫이 같은 수n = int(input())i = 1sum = 0while i  나머지와 몫이 같은 수는 규칙이 있음 만약 3이면 3x1 + 1, 3x2 + 2 가 나머지와 몫이 같은 수임 근데 i가 n을 넘어가면 더이상 없음3x3 + 3 = 12 , 3x4 +..