티스토리 뷰
https://www.acmicpc.net/problem/1011
이 문제의 경우 직접 종이에 써가면서 규칙을 찾는 것이 중요합니다. 단순하게 규칙을 찾아서 적용한 풀이를 설명할 것이며 어떠한 식을 구해서 푸는 방법도 있으니 참고하시기 바랍니다.
먼저 작동횟수를 기준으로 어떤 방식으로 이동하는지 확인해보겠습니다.
위 그림을 보면 서서히 이동거리를 증가시켰다가 서서히 이동거리를 감소시키는 방법이 최단거리임을 알 수 있습니다.
오른쪽과 왼쪽의 숫자가 최대한 같아질 수 있도록 하기 위해 앞에서 한번, 뒤에서 한번 숫자를 더하고 빼주는 작업을 반복합니다. 그와 동시에 작동 횟수를 증가시킵니다.
완벽한 데칼코마니를 이룬 경우 또는 x(왼쪽 지점)과 y(오른쪽 지점)이 교차된 경우 반복을 종료하고 지금까지 양쪽에서 이동했던 횟수를 더해 출력합니다.
자바 코드는 다음과 같습니다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(br.readLine());
for (int i = 0; i < t; i++) {
String[] inputs = br.readLine().split(" ");
int x = Integer.parseInt(inputs[0]);
int y = Integer.parseInt(inputs[1]);
int movingDistance = 0;
int xMovingDistance = 0;
int yMovingDistance = 0;
while (true) {
movingDistance++;
x += movingDistance;
xMovingDistance++; // x의 이동 횟수
if (x >= y) {
break;
}
y -= movingDistance;
yMovingDistance++; // y의 이동 횟수
if (x >= y) {
break;
}
}
bw.write(String.valueOf(xMovingDistance + yMovingDistance));
bw.newLine();
}
bw.flush();
}
}
위 풀이는 아래 글을 참고하였습니다.
- https://zorba91.tistory.com/116
규칙과 식을 만들어 푸는 방법은 아래 글을 참고하시면 좋을 것 같습니다.
'알고리즘' 카테고리의 다른 글
[백준 알고리즘] 2581 - 소수 (0) | 2021.06.17 |
---|---|
[백준 알고리즘] 1978 - 소수 찾기 (0) | 2021.06.16 |
[백준알고리즘] 10757 - 큰수 A+B (0) | 2021.06.04 |
[백준알고리즘] 2839 - 설탕 배달 (0) | 2021.06.02 |
[백준알고리즘] 2775 - 부녀회장이 될테야 (0) | 2021.05.31 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ECR
- sort
- spring
- 에라토스테네스의 체
- 조합
- EC2
- Baekjoon
- 수학
- string
- 순열
- Dynamic Programming
- 프로그래머스
- search
- AWS
- array
- SWIFT
- map
- CodeDeploy
- Combination
- cloudfront
- DFS
- ionic
- CodeCommit
- 소수
- BFS
- permutation
- java
- CodePipeline
- programmers
- Algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함