반응형

백준 249

[백준 / BOJ] C++ 29158 큰 수 만들기 게임

29158번: 큰 수 만들기 게임 문제 https://www.acmicpc.net/problem/29158 29158번: 큰 수 만들기 게임 성현이와 지훈이는 큰 수 만들기 게임을 하고 있다. 성현이는 양의 정수 $N$이 적힌 카드 $1$장이 들어 있는 주머니를 들고 있다. 지훈이는 성현이의 카드를 몰래 본 다음 성현이의 카드에 적힌 $N$ www.acmicpc.net 풀이 큰 수를 만드는 테크닉은 16496 - 큰 수 만들기 문제와 동일하다. 각각의 수를 문자열로 a = "1", b = "2"인 경우 ab = "12" ba = "21"로 더 큰 수를 만들 수 있는 것은 ba다. 이 정렬 조건으로 수를 정렬한 다음 차례대로 나열하면 된다. 먼저 동작 1과 동작 2가 있는데, 동작 1은 2 이상의 K로 2..

Problem Solving/BOJ 2023.09.05

[백준 / BOJ] C++ 29160 나의 FIFA 팀 가치는?

29160번: 나의 FIFA 팀 가치는? 문제 https://www.acmicpc.net/problem/29160 29160번: 나의 FIFA 팀 가치는? 첫 번째 줄에 선수의 수 $N$과 $K$가 공백으로 구분되어 주어진다. $(0\leq N\leq 1\,000\,000;$ $1\leq K\leq 50\,000)$ 두 번째 줄부터 $N$개의 줄에 걸쳐 각 줄에 $i$번째 선수의 포지션 $P_{i}$, 선수 가치 $W_{i}$가 www.acmicpc.net 풀이 항상 가치가 가장 높은 선수를 선발하는 과정을 반복하기 때문에 우선순위 큐(최대 힙)를 사용한다. 11개의 포지션 번호별로 선수를 저장할 수 있는 우선순위 큐 배열을 만든다. 각각의 포지션 번호별로 비어있는 우선순위 큐를 제외하고 한 명씩 선수를..

Problem Solving/BOJ 2023.09.05

[백준 / BOJ] C++ 29159 케이크 두 개

29159번: 케이크 두 개 문제 https://www.acmicpc.net/problem/29159 29159번: 케이크 두 개 $(0,0),(0,1),(1,0),(1,1)$이 네 쪽지점인 직사각형과 $(2,1),(3,2),(3,1),(3,2)$가 네 꼭지점인 직사각형을 동시에 이등분하는 직선의 방정식은 $y=\frac12 x+\frac14$이다. www.acmicpc.net 풀이 두 직사각형 각각의 중심 좌표를 구하고, 두 점을 지나는 일차방정식을 구하는 문제다. 분수 형태의 출력 형식 때문에 애를 먹은 문제다. 먼저 일차방정식의 형태를 보면 y - y1 = ((x2 - x1)/(y2 - y1))(x - x1)이다. y = Px + Q 형태로 나타냈을 때 P와 Q를 출력하는 문제다. 먼저 기울기 P ..

Problem Solving/BOJ 2023.09.05

[백준 / BOJ] C++ 29156 탭 UI

29156번: 탭 UI 문제 https://www.acmicpc.net/problem/29156 29156번: 탭 UI 탭 UI는 여러 탭이 일렬로 나열되어 특정 탭을 클릭하면 해당 탭에 대한 내용을 확인할 수 있는 UI(User Interface)이다. 화면 내에 있는 탭은 노출되고 좌우로 화면을 벗어난 탭은 노출되지 않으며 사 www.acmicpc.net 풀이 각 탭의 길이를 입력받을 때 누적합(prefix_sum) 배열을 만들어 전체 길이를 기록한다. 그리고 각각의 탭의 중앙의 좌표를 저장한 coordinate 배열을 만든다. 화면의 길이의 절반(화면의 중앙)을 mid라고 한다. 그리고 클릭한 탭 x가 주어졌을 때, mid에 위치하기 위해 coordinate[x]가 얼마나 이동해야 하는지를 gap이..

Problem Solving/BOJ 2023.09.04

[백준 / BOJ] C++ 29155 개발자 지망생 구름이의 취업 뽀개기

29155번: 개발자 지망생 구름이의 취업 뽀개기 문제 https://www.acmicpc.net/problem/29155 29155번: 개발자 지망생 구름이의 취업 뽀개기 난이도 $1$에서 $1$분, $4$분, $4$분 순서로, 난이도 $2$에서 $5$분, 난이도 $3$에서 $20$분, 난이도 $4$에서 $40$분, 난이도 $5$에서 $100$분 순서대로 풀면 $1+3+4+0+4+60+5+60+20+60+40+60+100=417$분이 걸린다. www.acmicpc.net 풀이 각 난이도 별로 문제를 푸는 데 걸리는 시간을 저장하고 오름차순으로 정렬한다. 각 난이도별로 풀어야하는 문제의 수만큼 앞에서부터 고르면 된다. 이 문제에서는 문제를 푸는 데 필요한 시간을 최소화하고 휴식시간도 최소화해야한다. 휴식..

Problem Solving/BOJ 2023.09.04

[백준 / BOJ] C++ 28683 피타! 피타! 피타츄!

28683번: 피타! 피타! 피타츄! 문제 https://www.acmicpc.net/problem/28683 28683번: 피타! 피타! 피타츄! 포켓몬스터를 좋아하는 종우는 포켓몬스터를 연구하다가 포켓몬스터가 상당히 수학적이고 코딩과 밀접한 관련이 있는 게임이라는 것을 알게 되었다. 모든 이동은 유클리드 공간에 평행하게 이 www.acmicpc.net 풀이 대회 당시에는 문제를 해결하지 못했다. 친구의 설명으로 문제를 해결하고 에디토리얼을 참고했다. 몇 가지 조건을 나누어 문제를 해결할 수 있다. 1. n이 제곱수인 경우 √n은 정수다. 임의의 정수 a에 대해 (√n, a, √(n+a^2))이 직각삼각형을 이루고, 두 변의 길이가 √n과 a로 정수이므로 무한하다. 2. n이 제곱수가 아닌 경우 나머지..

Problem Solving/BOJ 2023.08.17

[백준 / BOJ] C++ 28682 재우야 임관하자

28682번: 재우야 임관하자 문제 https://www.acmicpc.net/problem/28682 28682번: 재우야 임관하자 인터랙티브 문제의 경우 출력을 하고, 언어에 따라 아래와 같은 명령어를 바로 다음에 적어 출력 버퍼를 flush해 줘야 한다. C: fflush(stdout); C++: fflush(stdout); 혹은 std::cout > n; string a[] = {"swimming", "bowling", "soccer"}; for (int i = 0; i < n; i++) // 그냥 swimming만 n번 출력해도 된다. cout

Problem Solving/BOJ 2023.08.17

[백준 / BOJ] C++ 28445 알록달록 앵무새

28445번: 알록달록 앵무새 문제 https://www.acmicpc.net/problem/28445 28445번: 알록달록 앵무새 재현이가 키우는 앵무새 포포와 레몬이는 그동안 새끼들을 참 많이도 낳았다. 그렇게 태어난 앵무새들을 관찰하며 재현이는 앵무새들의 색에 간단한 규칙이 있다는 것을 발견했다. 그것은 바로 www.acmicpc.net 풀이 색 4가지를 입력받고 가능한 조합을 출력하는 문제다. 2중 for문으로 가능한 조합을 출력했다. 중복처리 및 정렬은 set 자료구조를 사용했다. 코드 #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); set s; for (int i = 0; i < 4; i++) { ..

Problem Solving/BOJ 2023.08.17

[백준 / BOJ] C++ 28444 HI-ARC=?

28444번: HI-ARC=? 문제 https://www.acmicpc.net/problem/28444 28444번: HI-ARC=? 첫째 줄에 각 문자에 들어갈 값 $H, I, A, R, C$ ($0 \leq H,I,A,R,C \leq 100$, $H,I,A,R,C$는 정수) 가 공백을 사이에 두고 순서대로 주어진다. www.acmicpc.net 풀이 값을 입력받고 식을 구성해서 출력하는 문제다. 코드 #include using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int h, i, a, r, c; cin >> h >> i >> a >> r >> c; cout

Problem Solving/BOJ 2023.08.17

[백준 / BOJ] C++ 28703 Double It

28703번: Double It 문제 https://www.acmicpc.net/problem/28703 28703번: Double It $31$에 $2$를 곱해서 $62$로, $41$에 $2$를 곱해서 $82$로, $51$ 에 $2$를 곱해서 $102$로, $3$에 $2$를 $5$번 곱해서 $96$으로 만들면, $A$의 최댓값 $102$와 최솟값 $62$의 차이가 $40$으로 최소가 됩니다. www.acmicpc.net 풀이 본 대회 때는 삽질만 종일 하다가 결국 못 푼 문제. 에디토리얼 참고해서 풀었다. 배열의 최솟값을 두배로 증가시켜 가며 최댓값과의 차를 최솟값으로 비교하며 업데이트한다. 이를 최솟값이 처음 배열의 최댓값보다 작을 때만 계속해서 반복한다. 최솟값 관리를 우선순위 큐로 하면 된다. 코..

Problem Solving/BOJ 2023.08.15
반응형