본문 바로가기

전체 글

(88)
백준 19953 <영재의 산책> 이 문제는 규칙을 잘 찾는 것이 중요한 문제이다. 초기의 v 값에 따라 반복되는 숫자가 달라진다. 예를 들어 초기값이 1이고 m이 1 인경우 이렇게 time=4번 만에 같은 값을 가지게 되고 초기값 13이고 m=3 인경우에 time=5번 만에 같은 값을 가지게 된다. 그러므로 time가 4와 5에 따라 계산을 다르게 해줘야 한다. 그래서 확인 해주기 위해서 ArrayList를 북 동 남 서 이렇게 4개를 만들어서 값을 넣어주면서 같을 때까지 진행하였다. 여기서 value는 몇 번 반복되는가를 나타내는 것으로 fv에 time값을 넣어주고 만약에 time이 5였다면 맨 초기의 속력 값을 따로 해줘야 하기 때문에 돌려야 하는 t값을 -1 해준 값으로 value를 구해준다. 반복되는 횟수만큼 이동을 진행한다. ..
백준 1744 <수묶기> 이 문제의 핵심은 어떻게 수를 묶을 것인가이다. 핵심을 파악하자면 음수는 음수끼리 양수는 양수끼리 묶는 게 결괏값이 더 커진다. 문제 접근 방법 음수는 음수끼리 양수는 양수 끼리 묶는다 가장 작은 음수는 그 다음 작은 음수와 묶는 것이 크고, 음수에 0을 곱하면 0 이 되기 때문에 이것 또한 작다. 양수는 가작 큰 양수와 그 다음 큰 양수를 묶으면 값이 커진다. 하지만 0을 곱하면 안 된다. 또한 1을 곱하면 자기 자신이기 때문에 1은 곱해주지 않고 그냥 더한다. 그래서 정렬을 해서 음수는 앞에서부터 양수는 뒤에서부터 계산을 해주면 된다. 음수 계산 방법 양수 계산 방법 2 1 2 답: 3 5 1 1 1 1 1 답: 5 이 반례들을 통해 1은 양수랑은 곱하지 않는것이 좋다는것을 이해했다!! 전체 코드 더..
백준 19952 <인성 문제있어??> 잘 읽어보면 간단한 DFS 또는 BFS문제이다. 처음에 우선순위 큐로 풀어야 되나 라는 고민을 잠시 했지만 높이의 차만큼 에너지가 감소되는 것이 아니기 때문에 그냥 Queue로도 풀이가 가능하다. 전체 코드 더보기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main{ public static class car{ int x; int y; int energe; public car(int x, int y, int..