https://www.acmicpc.net/problem/24228
24228번: 젓가락
두 개의 정수 $N, R$이 주어진다. $(1 ≤ N,R ≤ 10^{18})$
www.acmicpc.net
난이도 : S5
유형 : 수학
문제 풀이
항상 최악의 선택을 하면 된다.
1. 1 ~ N 종류의 젓가락 1개씩 뽑는다. -> N번
2. 아무거나 1개를 뽑으면 1쌍이 완성된다. -> 1번 (현재 1쌍 완성)
3. 이전에 뽑았던 젓가락 종류를 뽑는다
4. 남은 R-1 쌍을 완성하기 위해 3번 과정을 계속 진행한다. -> 2 * ( R - 1 ) 번
=> N + 1 + 2 * ( R - 1 )
주의)
입력값이 최대 10^18이므로 long 타입으로 변수를 선언
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private long N, R;
public void solution() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Long.parseLong(st.nextToken());
R = Long.parseLong(st.nextToken());
System.out.println(N + 1 + 2 * (R - 1));
}
public static void main(String[] args) throws IOException {
new Main().solution();
}
}'Algorithm, Problem Solving > 백준(boj)' 카테고리의 다른 글
| [백준][Java] 17070 - 파이프 옮기기 1 (0) | 2023.03.24 |
|---|---|
| [백준][Java] 2565 - 전깃줄 (0) | 2023.03.23 |
| [백준][java] 25644 - 최대 상승 (0) | 2023.03.22 |
| [백준][java] 10431 - 줄세우기 (0) | 2023.03.22 |
| [백준][java] 14492 - 부울행렬의 부울곱 (0) | 2023.03.21 |
댓글