반응형

구현 53

[백준 / BOJ] C++ 27939 가지 교배

27939번: 가지 교배 문제 https://www.acmicpc.net/problem/27939 27939번: 가지 교배 키위별의 유전학에 따르면 가지의 교배는 두 가지 서로 다른 방식이 가능하다. 교배란 서로 다른 두 품종으로부터 이전에 존재한 적 없는 하나의 품종을 만들어내는 것이다. P-우선 교배: 흰색과 www.acmicpc.net 풀이 조수들은 P-우선 교배를 하기 때문에 보라색인 가지가 1개라도 섞여있다면 보라색 가지가 배출되고, 키위는 W-우선 교배를 하기 때문에 흰색인 가지가 하나라도 있다면 흰색 가지가 배출된다. 따라서 각 번호의 가지가 P인지 W인지 저장하는 배열을 만들어두고 각 조수가 가진 품종 중에 P가 몇 개인지 센다. P-우선 교배에 따라 P가 0인 경우 W를 1 증가시키고 모..

Problem Solving/BOJ 2023.04.10

[백준 / BOJ] C++ 27880 Gahui and Soongsil University station

27880번: Gahui and Soongsil University station 문제 https://www.acmicpc.net/problem/27880 27880번: Gahui and Soongsil University station Soongsil University Station is famous as the deepest station on Seoul Subway Line 7. This station is so deep that the platform is on the B6. Gahui was surprised that she did not reach the platform after more than five minutes from the exit. Gahui wants to www.acmic..

Problem Solving/BOJ 2023.04.09

[백준 / BOJ] C++ 2638 치즈

2638번: 치즈 문제 https://www.acmicpc.net/problem/2638 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5 ≤ N, M ≤ 100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 www.acmicpc.net 풀이 공기에 두 면이 접촉해 있는 치즈는 사라진다. 발상이 중요한 문제로 치즈를 기준으로 탐색할지, 공기를 기준으로 탐색할지 기준을 잘 세워야 하는 문제다. 정답 풀이 이 문제에서 같은 시간에 사라지는 치즈가 모두 사라진 뒤 동시에 공기가 침투한다. 따라서 치즈가 사라지는 로직과 공기가 퍼지는 로직이 턴제로 진행되야 한다. 중요! 모눈종이의 맨 가장자리는 치즈가..

Problem Solving/BOJ 2023.03.28

[백준 / BOJ] C++ 27920 카드 뒤집기

27920번: 카드 뒤집기 문제 https://www.acmicpc.net/problem/27920 27920번: 카드 뒤집기 $1$부터 $N$까지 서로 다른 정수가 적혀있는 카드를 $N$장 가지고 있다. 각 카드에는 앞면과 뒷면이 존재한다. 카드의 앞면에는 숫자가 적혀있고, 뒷면에는 카드의 무늬가 그려져 있다. $N$장의 카 www.acmicpc.net 풀이 카드를 어떻게 해야 조건을 만족하며 모두 뒤집을 수 있을지 구성하는 문제다. 처음부터 든 생각은 N은 마지막에 배치해야 하기 때문에 양쪽 끝부터 수를 줄여가며 구성하면 될 것 같았다. 노트에 한 번 적어보고 바로 구현해서 풀었다. 예를 들어 N이 4인 경우 카드 배치는 3 1 4 2, 순서는 1 4 2 3으로 하면 가능하다. N이 5인 경우엔 4 ..

Problem Solving/BOJ 2023.03.27

[백준 / BOJ] C++ 27918 탁구 경기

27918번: 탁구 경기 문제 https://www.acmicpc.net/problem/27918 27918번: 탁구 경기 달구와 포닉스는 탁구 치는 것을 좋아한다. 윤이는 오늘도 탁구를 치는 달구와 포닉스를 보고, 누가 경기에서 승리할지 예측해 보기로 했다. 달구와 포닉스가 탁구 경기를 진행하는 규칙은 다음 www.acmicpc.net 풀이 경기 결과에 따라 팀의 점수를 증가시키다가 차이가 2가 되는 순간 멈추고 각 팀의 점수를 출력하는 문제다. 반복문 제어를 할 수 있는지 여부를 분별하는 문제. 코드 #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, a = 0, b = 0; cin >..

Problem Solving/BOJ 2023.03.27

[백준 / BOJ] C++ 27889 특별한 학교 이름

27889번: 특별한 학교 이름 문제 https://www.acmicpc.net/problem/27889 27889번: 특별한 학교 이름 GEC에는 여러 학교가 있다. 각 학교의 약칭과 정식 명칭은 다음과 같다. NLCS: North London Collegiate School BHA: Branksome Hall Asia KIS: Korea International School SJA: St. Johnsbury Academy 학교 이름을 좋아하는 규빈이 www.acmicpc.net 풀이 문제에 주어진 약칭을 각각 조건문에 넣어 정식 명칭을 출력하도록 하면 되는 문제다. 코드 #include using namespace std; int main() { ios::sync_with_stdio(false); c..

Problem Solving/BOJ 2023.03.27

[백준 / BOJ] C++ 27736 찬반투표

27736번: 찬반투표 문제 https://www.acmicpc.net/problem/27736 27736번: 찬반투표 투표가 통과되었으면 APPROVED, 통과되지 않았으면 REJECTED, 무효 처리되었으면 INVALID를 출력한다. www.acmicpc.net 풀이 찬성, 반대, 무효의 수를 각각 세어 비교하는 문제다. 절반 이상이 기권인 경우 무효이므로 (기권 수 × 2) ≥ N 인 경우 무효다. 무효가 아닌 경우 찬성 수와 반대 수를 비교하여 출력하면 된다. 코드 #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int arr[3] = {0}; int n, x; cin >> n; for (i..

Problem Solving/BOJ 2023.03.12

[백준 / BOJ] C++ 3111 검열

3111번: 검열 문제 https://www.acmicpc.net/problem/3111 3111번: 검열 첫째 줄에 단어 A가, 둘째 줄에 텍스트 T가 주어진다. A와 T는 알파벳 소문자로만 이루어져 있고, A는 최대 25자, T는 최대 300,000자이다. www.acmicpc.net 풀이 문자열 T의 왼쪽에서부터 탐색해 문자열 A가 있으면 제거하고, 오른쪽부터 탐색해서 또 있으면 제거, 또다시 왼쪽, 오른쪽,... 반복하며 더 이상 그 문자열 A를 찾을 수 없을 때 남아있는 문자열을 출력하는 문제다. front, back이라는 덱을 2개 사용했다. front는 문자열 T의 앞에서부터 차례대로 넣는 컨테이너고, back은 뒤에서부터 넣는 컨테이너다. 즉, front는 push_back와 pop_bac..

Problem Solving/BOJ 2023.03.06

[백준 / BOJ] C++ 17215 볼링 점수 계산

17215번: 볼링 점수 계산 문제 https://www.acmicpc.net/problem/17215 17215번: 볼링 점수 계산 첫째 줄에 각 기회마다 소현이가 쓰러뜨린 볼링핀의 개수가 공백없이 주어진다. 이때 스트라이크는 S, 스페어는 P, 핀을 하나도 못 쓰러뜨린 것은 -으로 주어진다. www.acmicpc.net 풀이 시키는 대로 구현하는 문제다. 볼링에 대한 규칙을 아는 사람이라면 문제도 안 읽고 쉽게 풀 수 있을 것 같다. 문자열의 각 문자를 탐색하며 숫자일 경우 점수를 더하고, P(스페어)인 경우 (10 - 이전 투구에서 친 점수)를 추가하고 다음 투구의 점수도 더해준다. S(스트라이크)인 경우 10점을 추가하고 다음 두 번의 투구 점수를 함께 더해준다. 여기서 주의할 점은 10프레임에 ..

Problem Solving/BOJ 2023.03.05

[백준 / BOJ] C++ 27522 카트라이더: 드리프트

27522번: 카트라이더: 드리프트 문제 https://www.acmicpc.net/problem/27522 27522번: 카트라이더: 드리프트 레드팀은 2, 4, 5, 6등을 달성하여 총 $20$점을, 블루팀은 1, 3, 7, 8등을 달성하여 총 $19$점을 기록하였다. www.acmicpc.net 풀이 각 레이서의 기록과 속한 팀을 pair로 받아 배열에 저장한다. 기록은 분:초:밀리초 형태이므로 문자열 오름차순으로 정렬하면 기록이 짧은 순으로 정렬이 된다. 이제 배열을 순회하며 각 레이서의 팀에 등수에 맞는 점수를 더해준다. 점수를 비교해 승리 팀을 출력하면 된다. 코드 #include using namespace std; int main() { ios::sync_with_stdio(false); ..

Problem Solving/BOJ 2023.02.26
반응형