본문 바로가기

Algorythms144

백준 2840번 행운의 바퀴 c++ 풀이 문제 상덕이는 최근에 행운의 바퀴를 구매했다. 상덕이는 바퀴의 각 칸에 알파벳 대문자를 아래 그림과 같이 적었다. 바퀴에 같은 글자는 두 번 이상 등장하지 않는다. 또, 바퀴는 시계방향으로만 돌아간다. 바퀴 옆에는 화살표가 있는데, 이 화살표는 항상 한 곳을 가리키고 있으며, 돌아가는 동안 가리키는 글자는 바뀌게 된다. 위의 그림에서는 H를 가리키고 있다. 상덕이는 바퀴를 연속해서 K번 돌릴 것이다. 매번 바퀴를 돌릴 때 마다, 상덕이는 화살표가 가리키는 글자가 변하는 횟수와 어떤 글자에서 회전을 멈추었는지를 종이에 적는다. 희원이는 상덕이가 적어놓은 종이를 발견했다. 그 종이를 바탕으로 상덕이가 바퀴에 적은 알파벳을 알아내려고 한다. 상덕이가 종이에 적어놓은 내용과 바퀴의 칸의 수가 주어졌을 때, 바퀴.. 2024. 1. 19.
백준 14241번 슬라임 합치기 c++ 풀이 문제 영선이와 효빈이는 슬라임을 합치는 게임을 하고 있다. 두 사람은 두 슬라임을 골라서 하나로 합쳐야 한다. 게임은 슬라임이 하나 남았을 때 끝난다. 모든 슬라임은 양수 크기를 가지고 있다. 두 슬라임 x와 y를 합쳤을 때, 합친 슬라임의 크기는 x+y가 된다. 또한, 슬라임을 합칠 때 마다 두 사람은 x*y 점수를 얻게 된다. 영선이와 효빈이가 얻을 수 있는 점수의 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 슬라임의 개수 N (2 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 슬라임의 크기가 주어진다. 크기는 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 영선이와 효빈이가 얻을 수 있는 점수의 최댓값을 출력한다. 예제 입력 1 복사 2 3 4 예제 출력 1 복사 12 예제 입력 2 복.. 2024. 1. 19.
백준 16943번 숫자 재배치 c++ 풀이 문제 두 정수 A와 B가 있을 때, A에 포함된 숫자의 순서를 섞어서 새로운 수 C를 만들려고 한다. 즉, C는 A의 순열 중 하나가 되어야 한다. 가능한 C 중에서 B보다 작으면서, 가장 큰 값을 구해보자. C는 0으로 시작하면 안 된다. 입력 첫째 줄에 두 정수 A와 B가 주어진다. 출력 B보다 작은 C중에서 가장 큰 값을 출력한다. 그러한 C가 없는 경우에는 -1을 출력한다. 제한 1 ≤ A, B < 109 예제 입력 1 복사 1234 3456 예제 출력 1 복사 3421 예제 입력 2 복사 1000 5 예제 출력 2 복사 -1 예제 입력 3 복사 789 123 예제 출력 3 복사 -1 순열 문제 주의 next_permutation은 오름차순으로 정렬되어 있어야 제대로 사용 가능하다. prev_pe.. 2024. 1. 19.
백준 11931번 수 정렬하기 4 c++ 풀이 문제 N개의 수가 주어졌을 때, 이를 내림차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 내림차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제 입력 1 복사 5 1 2 3 4 5 예제 출력 1 복사 5 4 3 2 1 기본 정렬 문제 - c++ 풀이 #include using namespace std; int n; vectorv; int main() { ios_base::sync_with_stdio(0); cin.tie(0), cout.tie(0); cin >> n; for.. 2024. 1. 19.
백준 1756번 피자 굽기 c++ 풀이 문제 월드피자 원주 지점에서 N개의 피자 반죽을 오븐에 넣고 구우려고 한다. 그런데, 월드피자에서 만드는 피자 반죽은 지름이 제각각이다. 그런가하면, 월드피자에서 사용하는 오븐의 모양도 몹시 오묘하다. 이 오븐은 깊은 관처럼 생겼는데, 관의 지름이 깊이에 따라 들쭉날쭉하게 변한다. 아래는 오븐의 단면 예시이다. 피자 반죽은 완성되는 순서대로 오븐에 들어간다. 이렇게 N개의 피자가 오븐에 모두 들어가고 나면, 맨 위의 피자가 얼마나 깊이 들어가 있는지가 궁금하다. 이를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 오븐의 깊이 D와 피자 반죽의 개수 N이 공백을 사이에 두고 주어진다. (1 ≤ D, N ≤ 300,000) 둘째 줄에는 오븐의 최상단부터 시작하여 깊이에 따른 오븐의 지름이 차례대로 주어진다.. 2024. 1. 18.
백준 3049번 다각형의 대각선 c++ 풀이 문제 세 대각선이 한 점에서 만나지 않는 볼록 N각형이 주어졌을 때, 대각선의 교차점의 개수를 세는 프로그램을 작성하시오. 아래 그림은 위의 조건을 만족하는 한 육각형의 교차점 그림이다. 모든 내부각이 180도보다 작은 다각형을 볼록 다각형이라고 한다. 입력 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 100) 출력 첫째 줄에 교차점의 개수를 출력한다. 예제 입력 1 복사 3 예제 출력 1 복사 0 예제 입력 2 복사 4 예제 출력 2 복사 1 예제 입력 3 복사 6 예제 출력 3 복사 15 교차점이 생기는 조건은 4개의 꼭지점에서 나온 선분이 만나게 되면 교차점이 생기게 된다. 따라서 nC4를 구하게 된다면 교차점의 개수를 구할 수 있다. n * (n-1) * (n-2) * (n-3) / 24 이렇게 n.. 2024. 1. 18.