본문 바로가기

알고리즘 별 문제 정리/수학

(3)
[C++] 백준 1011: Fly me to the Alpha Centauri 문제 이해- 지구에서 특정 행성으로 공간 이동을 한다고 하자.- 이전에 k광년 이동 시, k-1 or k or k+1 광년만큼만 이동할 수 있다.- x에서 y까지 가는데  필요한 최소한의 공간 이동 장치 작동 횟수를 구하라.- 단, y 지점 도착하기 바로 직전에는 반드시 1광년만큼만 이동해야 한다. - 시간 제한: 2초- 메모리 제한: 512MB T: 테스트 케이스x: 현재 위치 (0 ~ 2^31-1)y: 목표 위치 (0 ~ 2^31-1) - 각 테스트 케이스에 대하여 x에서 y까지 정확히 도달하는데 필요한 최소한의 공간이동 횟수를 구하라.  문제 풀이뭔가 수열 문제 같기도 했고, 투포인터처럼 풀어볼까도 생각했던 문제이다. 결국 30분 시간제한을 넘겨 인터넷 풀이를 참고하였다. 총 2가지의 풀이를 참고하..
[C++] 백준 1629: 곱셈 문제 이해- 자연수 A를 B번 곱한 수를 구하려고 한다.- 단 매우 커질 수 있으므로 C로 나눠주도록 하자. - 시간 제한: 0.5초- 메모리 제한: 128MB - A: 곱하는 수- B: 곱하는 횟수- C: 나누는 수A, B, C 모두 (1 ~ 2,147,483,647) 사이의 정수로 int형으로 표현할 수 있다. - A를 B번 곱한 수를 C로 나눈 나머지를 출력하자.  문제 풀이처음에 가장 먼저 생각한건 역시 브루트포스다A를 그냥 B번 곱해주는 것이다. 그런데, B의 최댓값은 2,147,483,647로 대략 10^9를 넘는다.즉, O(N)의 시간복잡도를 가져도 시간 초과로 AC를 받을 수 없을 것이다. 도저히 시간 복잡도를 줄일 방법이 생각나지 않아서 인터넷을 참고했다.    이 문제를 푸는 방법은 '..
[C++] 백준 1459: 걷기 문제 이해- 학교에서 집까지 가려고 한다.- 도시의 크기는 무한대이다.- 도로는 수평으로 또는 수직으로 모두 존재한다. -> 수직선을 생각하자.- 세준이의 현재 위치는 (0,0)이다.- 세준이는 가로로 걷거나, 세로로 걷거나, 대각선으로 가로지를 수 있다.- 집까지 가는 최소시간을 구하라. - 시간 제한: 2초- 메모리 제한: 128MB - x, y: 집의 위치 (0 ~ 1,000,000,000, 10^9)- w: 1블록을 가는데 걸리는 시간 (1 ~ 10,000, 10^4)- s: 1블록을  가로지르는데 걸리는 시간 (1 ~ 10,000, 10^4) - 세준이가 집까지 가는데 걸리는 최소시간을 구하라.  문제 풀이시작은 경우의 수를 나눠서 풀어야겠다고 생각했다.세준이는 가로로 이동, 세로로 이동, 대각..