Algorithm, Problem Solving/백준(boj)

[백준][Java] 24228 - 젓가락

태오님 2023. 3. 23.

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();
    }
}

댓글