- BOJ - 풍선 터뜨리기 (2346번)2024년 12월 09일
- 학페
- 작성자
- 2024.12.09.:01
https://www.acmicpc.net/problem/2346
배열을 사용하여 풀었습니다.
문제 풀기 전에 어떻게 접근해야할지 공책에 적으면서 했어요.
대략적인 접근 방법은 아래와 같습니다.
/* 함수를 만들어서 순서가 담긴 벡터를 리턴값으로 했습니다. 리턴하는 벡터는 이름이 v 입니다. int tmp = balloons[1]; v.push_back(1); balloons[1] = 0; while(v.size() != n){ if (tmp > 0) if(현재 인덱스 != n) if(balloons[현재인덱스] != 0) tmp--; 현재인덱스++; else (현재인덱스 == n) 현재 인덱스 = 1; tmp--; else if (tmp < 0) if(현재 인덱스 != n) if(balloons[현재인덱스] != 0) tmp++; 현재인덱스--; else (현재인덱스 == 1) 현재 인덱스 = n; tmp++; else (tmp == 0) tmp = ballons[현재인덱스]; balloons[현재인덱스] = 0; v.push_back(현재인덱스) } */
위의 방법에서 조금 추가해서 적은 게 아래의 소스코드 입니다. 크게 다르지는 않습니다.
차근차근 한 덕분에 한 번에 맞췄네요. 다행입니당.
제가 작성한 코드는 아래와 같습니다.
더보기#include <iostream> #include <stack> #include <queue> #include <deque> #include <string> #include <unordered_map> #include <vector> #include <algorithm> using namespace std; typedef long long int ll; vector<int>func(int n); int balloons[1001]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; vector <int> result; for (int i = 1; i <= n; i++) cin >> balloons[i]; result = func(n); for (int i = 0; i < result.size(); i++) cout << result[i] << ' '; return 0; } vector<int> func(int n) { vector<int>v; int tmp = balloons[1], index = 1; // 첫 시작은 1번 풍선 v.push_back(1); // 1번을 터뜨림 balloons[1] = 0; while (v.size() != n) { if (tmp > 0) { // 우측으로 가기 if (index != n) { // 끝 지점인지 확인 index++; if (balloons[index] != 0) { // 안 터진 풍선인 경우만 이동 횟수 감소 tmp--; } else continue; } else { // 끝지점 일 때 index = 1; // 맨 왼쪽으로 이동 if (balloons[index] != 0) { // 안 터진 풍선인 경우만 이동 횟수 감소 tmp--; } else continue; } } else if (tmp < 0) { if (index != 1) { // 가장 왼쪽이 아니다. index--; if (balloons[index] != 0) { // 안 터진 풍선인 경우만 이동 횟수 증가 (음수라서) tmp++; } else continue; } else { // 가장 왼쪽이다. index = n; // 맨 오른쪽으로 이동 if (balloons[index] != 0) { // 안 터진 풍선인 경우만 이동 횟수 증가 (음수라서) tmp++; } else continue; } } else { // 풍선을 터뜨려야 하는 위치 tmp == 0 tmp = balloons[index]; balloons[index] = 0; v.push_back(index); } } return v; }
'Baekjoon Online Judge > C++' 카테고리의 다른 글
BOJ - 정규형 (4882번) (0) 2025.03.23 BOJ - 영단어 암기는 괴로워 (20920번) (0) 2024.12.16 BOJ - 덱 2 (28279번) (0) 2024.12.08 BOJ - 큐 2 (18258번) (0) 2024.12.07 BOJ - 도키도키 간식드리미 (12789번) (0) 2024.12.06 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)