개인사
[G5] 백준 1011번 Fly me to the Alpha Centauri C++ 수학, 투 포인터 본문
728x90

리뷰

https://www.acmicpc.net/problem/1011
가운데서 만나는 시간을 구하는 전략을 수립했는데 싱겁게 맞아버렸다.
전역 변수
- t : 테스트 케이스의 개수를 저장할 변수
- x, y : 두 행상의 위치를 저장할 변수
함수
없음
문제풀이
- t값을 입력 받고, t번의 테스트케이스를 수행한다.
- 매 테스트케이스마다 변수 x, y를 입력 받는다.
- 기저 조건으로 y-x가 1일 경우 1을 출력하고 다음 테스트케이스를 수행한다.
- 변수 move를 0으로 초기화하고, dist를 1로 초기화한다.
- x가 y보다 작을 경우 while루프를 수행한다.
- x에 dist를 더하고, move를 증가시킨다. x가 y이상이면 break처리한다.
- y에 dist를 빼고, move를 증가시킨다. x가 y이상이면 break처리한다.
- dist값을 증가시킨다.
- while루프가 종료된 후 move를 출력 후 개행문자를 삽입해준다.
트러블 슈팅
없음
참고 사항
- 입력값이 많아보인다, 빠른 입출력을 사용하는 것을 추천한다.
- 포인터를 양쪽 끝에서 시작하여 중간에서 만나는 최단 시간을 구해주었다.
정답 코드
#include<iostream>
using namespace std;
int t, x, y;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> t;
while (t--) {
cin >> x >> y;
if (y - x == 1) {
cout << 1 << "\n";
continue;
}
int move = 0;
int dist = 1;
while (x < y) {
x += dist;
++move;
if (x >= y) break;
y -= dist;
++move;
if (x >= y) break;
++dist;
}
cout << move << "\n";
}
}728x90
'알고리즘 공부 > C++' 카테고리의 다른 글
| [G2] 백준 1135번 뉴스 전하기 C++ 트리, 깊이 우선 탐색, 그리디 알고리즘, 정렬 (0) | 2025.10.29 |
|---|---|
| [G1] 백준 1113번 수영장 만들기 C++ 구현, 시뮬레이션, 너비 우선 탐색, 플러드 필 (0) | 2025.10.29 |
| [G5] 백준 3967번 매직 스타 C++ 구현, 백트래킹 (0) | 2025.10.29 |
| [S2] 백준 6603번 로또 C++ 백트래킹 (0) | 2025.10.29 |
| [P5] 백준 2325번 개코전쟁 C++ 다익스트라, 역추적 (2) | 2025.10.28 |
