
Codeforces는 외국 알고리즘 저지 사이트로, 백준처럼 각종 알고리즘 문제를 풀어볼 수 있을 뿐 아니라 주기적으로 대회를 개최하는 걸로 유명한 사이트다. 대회에서 거둔 성적에 따라 레이팅을 얻을 수 있어서, 알고리즘 문제풀이를 즐기는 사람들 사이에선 코드포스 레이팅으로 실력을 가늠하기도 한다... 고 하더라. 나는 딱히 알고리즘 문제풀이가 취미인 사람은 아니고 그냥 취준 하다보니 백준이랑 SWEA 들락거리면서 지금 다니는 곳에서 내주는 과제 정도나 푸는 사람이다. 더구나 내가 알고있던 정보는, 코드포스 대회는 Div. 1이랑 Div. 2 두 개의 부문이 있는데 둘 중에 낮은 레벨인 Div. 2만 해도 3번 문제부터는 백준 solved.ac 기준으로 골드 상위에서 플티 이상급 문제가 튀어나오는 굉장히..

https://www.acmicpc.net/problem/17472 17472번: 다리 만들기 2 첫째 줄에 지도의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 N개의 줄에 지도의 정보가 주어진다. 각 줄은 M개의 수로 이루어져 있으며, 수는 0 또는 1이다. 0은 바다, 1은 땅을 의미한다. www.acmicpc.net 삼성 역량테스트 A형 (= 삼성 SW직군 공채 코딩테스트 수준) 기출 문제. 위 그림과 같은 맵이 주어지고, 파란색을 섬이라고 한다. 모든 섬을 연결할 수 있도록 다리 (회색) 를 놓아야 하는데 다리의 총 길이가 최소가 되도록 놓았을 때 그 길이를 구하는 문제이다. > 다리는 가로 or 세로, 일직선으로만 놓아야 한다 > 두 섬을 잇기 위해 다리를 놓았는데 중간에 또다른 섬이..
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h가 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.논문별 인용 횟수는 0회 이상 10,000회 이하입니다. 예를 들어서 입력이 [3, 0, 6, 1, 5] 면 3회 이상 인..
n개의 정수로 이루어진 수열이 있다. 이 수열에서 한 정수를 제거하거나, 또는 두 정수를 제거할 수 있다. 한 정수를 제거하는 경우에는 그 정수가 점수가 되고, 두 정수를 제거하는 경우에는 두 정수의 곱이 점수가 된다. 이를 반복하여 수열에 아무 수도 남지 않게 되었을 때, 점수의 총 합의 최대를 구하는 프로그램을 작성하시오. 예를 들어 (-1 5 -3 5 1) 과 같은 수열이 있다고 하자. 먼저 1을 제거하고, 다음으로는 5와 5를 제거하고, 다음에는 -1과 -3을 제거했다고 하자. 이 경우 각각 점수가 1, 25, 3이 되어 총 합이 29가 된다. 첫째 줄에 정수 n(1≤n≤100,000)이 주어진다. 다음 n개의 줄에는 절댓값이 1,000,000을 넘지 않는 정수가 n개 주어진다. 직관적 아이디어:..

n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 노드의 개수 n은 2 이상 20,000 이하입니다. 간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다. vertex 배열 각 행 [a, b]는 a번 노드와 b번 노드 사이에 간선이 있다는 의미입니다. 그래프의 1번 노드에서부터 가장 멀리 떨어진..
스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다.장르 내에서 많이 재생된 노래를 먼저 수록합니다.장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질 때, 베스트 앨범에 들어갈 노래의 고유 번호를 순서대로 return 하도록 solution 함수를 완성하세요. genres[i]는 고유번호가 i인 노래의 장르입니다. plays[i]는 고유번호가 i인 노래가 재생된 횟수입니다. genres와 pl..

위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 다이나믹 프로그래밍 문제라고 써있다. DP 문제는 언제 봐도 어렵다. 저번에 Knapsack 문제를 예시로 DP에 대해서 나름 설명을 한 포스팅도 썼었고, 더 예전에는 프로그래밍 과..

무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요. 최대 2..

백준 온라인 저지의 2839번 문제. 언제나처럼 침대에 누워서 폰 만지작거리면서 타임라인 쭉 넘겨보고 있었는데, 누가 간단해보이는데 은근 어렵다며 이 문제를 올렸다. 배달해야 할 설탕의 무게 N (kg) 이 주어졌을 때, 3kg짜리 봉지랑 5kg짜리 봉지를 가지고 최소한의 봉지만 사용해서 배달하는 방법을 찾는 문제다. '3x + 5y = N을 만족하는 (x+y) 의 최소값을 구하라' 로도 표현할 수 있다. 1) 내가 푼 방법 문제를 보고 일단 딱 든 생각은 최대한 5kg짜리 봉지를 많이 쓰고 싶다. 3kg짜리 봉지를 생각하지 말고 5kg짜리에 초점을 맞춰보면, N을 5로 나누면 5kg짜리 봉지 몇 개를 쓸 수 있을지 알 수 있겠다. 몇 개의 예시를 생각해보자. 50kg -> 5kg * 10개 51kg -..