본문 바로가기

백준903

[백준] 16498번 : 작은 벌점 (C++) 16498번 : 작은 벌점 문제) 세 명이 한 팀이 되어 정수를 조합하는 게임이 있다. 이 게임에서 각 팀의 각 플레이어는 정수가 하나씩 적혀있는 숫자 카드를 한 장 이상 받는다. 각 플레이어는 가지고 있는 숫자 카드 중 한 장을 선택해 책상에 내려 놓는다. 이렇게 되면 책상에 총 3장의 카드가 놓이게 되며, 이 때 보이는 수의 최댓값과 최솟값의 차이가 벌점이 된다. 이를 식으로 표현하면 다음과 같다. | max(a,b,c) – min(a,b,c) | 여기서 a, b, c는 각각 플레이어가 선택하여 내려놓은 카드의 숫자 값이다. 세 명의 플레이어에게 주어진 숫자 카드가 주어졌을 때, 만들 수 있는 가장 작은 벌점을 구하는 프로그램을 작성하시오. 입력 : 첫째 줄에 첫 번째 플레이어가 받은 숫자 카드의 개.. 2024. 2. 3.
[백준] 2121번 : 넷이 놀기 (C++) 2121번 : 넷이 놀기 문제) 네 사람이서 2차원 평면상의 N개의 점을 이용해서 할 수 있는 놀이가 있다. 바로 각 사람이 1개씩의 점을 적절히 선택해서 변이 x축 혹은 y축에 평행한 직사각형을 만드는 일이다. 물론 그냥 만들면 재미가 없기 때문에 가로의 길이가 A 세로의 길이가 B인 직사각형을 몇 가지나 만들 수 있는지 알아보기로 했다. 예를 들어 점이 A(0, 0), B(2, 0), C(0, 3), D(2, 3), E(4, 0), F(4, 3)의 6개가 있고, 만들고 싶은 직사각형이 가로가 2, 세로가 3인 직사각형이라면 (A, B, C, D), (B, D, E, F)의 두 가지 경우가 가능하다. 모든 경우의 수를 구해보자. 입력 : 첫 줄에 점들의 개수 N(5 ≤ N ≤ 500,000)이 주어진다.. 2024. 2. 2.
[백준] 13423번 : Three Dots (C++) 13423번 : Three Dots 문제) 직선 위에 서로 다른 N개의 점이 찍혀 있다. 점 i의 위치는 Xi이다. N개의 점 중 3개를 골라 가장 왼쪽에 있는 점을 a, 가운데 있는 점을 b, 가장 오른쪽에 있는 점을 c라고 하자. 각각의 점의 위치는 Xa, Xb, Xc이다. 이때 점 a, b 사이의 거리와 점 b, c사이의 거리가 같으면 세 점의 간격이 같다고 한다. 즉, Xb - Xa = Xc – Xb일 때 세 점의 간격이 같다. 다음은 N = 5인 경우의 예시이다. 위 예시에서 점의 위치는 각각 -4, -1, 0, 2, 4이다. 이중 -4, -1, 0위치의 세 점을 각각 a, b, c라고 하면 Xb - Xa = 3, Xc – Xb = 1로 간격이 같지 않다. 그러나 -4, -1, 2 위치의 세 점.. 2024. 2. 2.
[백준] 1687번 : 행렬 찾기 (C++) 1687번 : 행렬 찾기 문제) 0과 1로 이루어진 행렬이 있다. 이 행렬의 부분행렬은 이 행렬 안에 포함되는 행렬을 의미한다. 이러한 부분행렬들 중에서 0으로만 이루어진 부분행렬을 찾으려 한다. 그 중에서 가장 면적이 넓은 것을 구해내는 프로그램을 작성하시오. 입력 : 첫째 줄에 행렬의 크기를 나타내는 두 정수 N, M(1≤N, M≤333)이 주어진다. 다음 N개의 줄에는 M개의 정수(0또는 1)가 공백없이 주어진다. 이 숫자는 행렬을 구성하는 원소이다. 출력 : 첫째 줄에 답을 출력한다. 풀이) 일반적인 4중 for문에서 어떻게 해야 3중 for문으로 줄일 수 있을지 생각해보는게 중요한 문제였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2.. 2024. 1. 30.