๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 1783๋ฒˆ: ๋ณ‘๋“  ๋‚˜์ดํŠธ(๊ทธ๋ฆฌ๋””, ๊ตฌํ˜„)

by ์ฃผ๋ฐœ2 2020. 2. 4.
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/1783

 

1783๋ฒˆ: ๋ณ‘๋“  ๋‚˜์ดํŠธ

์ฒซ์งธ ์ค„์— ์ฒด์ŠคํŒ์˜ ์„ธ๋กœ ๊ธธ์ด N์™€ ๊ฐ€๋กœ ๊ธธ์ด M์ด ์ฃผ์–ด์ง„๋‹ค. N๊ณผ M์€ 2,000,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

www.acmicpc.net

์ฝ”๋“œ

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();	// ์„ธ๋กœ
		int M = scan.nextInt();	// ๊ฐ€๋กœ
		int visitRoom = 1;		// ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์นธ์˜ ์ˆ˜
		
		if(N == 1)	// ์„ธ๋กœ๊ธธ์ด๊ฐ€ 1 => ์ฒ˜์Œ์— ์žˆ๋Š” ์นธ๋งŒ ๊ฐ€๋Šฅ
			visitRoom = 1;
		else if(N == 2) {	// ์„ธ๋กœ ๊ธธ์ด๊ฐ€ 2 => ์˜ค๋ฅธ์ชฝ์œผ๋กœ๋Š” ๋ฌด์กฐ๊ฑด 2์นธ๋งŒ ๊ฐˆ ์ˆ˜ ์žˆ์Œ.
			if(M>=7)	// ์˜ค๋ฅธ์ชฝ์œผ๋กœ 3๋ฒˆ ๊ฐˆ ์ˆ˜ ์žˆ์Œ(6์นธ) 
				visitRoom += 3;
			else if(M<7 && M>=5)	// ์˜ค๋ฅธ์ชฝ์œผ๋กœ 2๋ฒˆ ๊ฐˆ ์ˆ˜ ์žˆ์Œ(4์นธ)
				visitRoom += 2;
			else if(M == 3 || M == 4)	// ์˜ค๋ฅธ์ชฝ์œผ๋กœ 1๋ฒˆ ๊ฐˆ ์ˆ˜ ์žˆ์Œ(2์นธ)
				visitRoom += 1;
				
		}
		
		// ์„ธ๋กœ ๊ธธ์ด๊ฐ€ 3์ด์ƒ์ธ ๊ฒฝ์šฐ => 2์นธ ์œ„๋กœ, 2์นธ ์•„๋ž˜๋กœ ๊ฐ€๋ฉด์„œ ์˜ค๋ฅธ์ชฝ ๊ธธ์ด๋งŒ ํŒ๋‹จํ•œ๋‹ค.
		else {
			if(M > 6) {	// ์ด๋™ ํšŸ์ˆ˜๊ฐ€ 4๋ฒˆ ์ด์ƒ์ด ๋˜๋Š” ์ตœ์†Œ ๊ฐ€๋กœ์˜ ๊ธธ์ด
				visitRoom += 4;	// ์ด๋™ ํšŸ์ˆ˜ 4๋ฒˆ
				M -= 7;	// 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ ํ›„ ์ตœ๋Œ€ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ
				visitRoom += M;	// ๋‚˜๋จธ์ง€๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ 1์นธ์”ฉ ๊ฐ€๋ฉด ๋˜๋ฏ€๋กœ ๋‚จ์€ ๊ฐ€๋กœ๊ธธ์ด๋งŒํผ ๋”ํ•œ๋‹ค.
			}
			else {	// ์ด๋™ ํšŸ์ˆ˜๊ฐ€ 4๋ฒˆ์ด ์•ˆ๋˜๋Š” ๊ฐ€๋กœ์˜ ๊ธธ์ด => ์ตœ๋Œ€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์นธ์˜ ๊ฐœ์ˆ˜ ํŒ๋ณ„.
				if(M>=4 && M<=6)	// ์˜ค๋ฅธ์ชฝ์œผ๋กœ 3๋ฒˆ ๊ฐˆ ์ˆ˜ ์žˆ์Œ.
					visitRoom += 3;
				else if(M == 3)	// ์˜ค๋ฅธ์ชฝ์œผ๋กœ 2๋ฒˆ ๊ฐˆ ์ˆ˜ ์žˆ์Œ.
					visitRoom += 2;
				else if(M == 2)			// ์˜ค๋ฅธ์ชฝ์œผ๋กœ 1๋ฒˆ ๊ฐˆ ์ˆ˜ ์žˆ์Œ.
					visitRoom += 1;
			}
		}
		System.out.println(visitRoom);
		scan.close();
	}

}

ํ’€์ด

๋ชจ๋“  ์ผ€์ด์Šค๋ฅผ ๋‹ค ์ƒ๊ฐํ•ด๊ฐ€๋ฉฐ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๋ฌธ์ œ ํ’€๋ฉด์„œ๋„ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๋‹ค๋งž์•˜์œผ๋‚˜ ๋ฐ˜๋ก€๊ฐ€ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ ํ†ต๊ณผ...

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

N * M ํฌ๊ธฐ์˜ ์ฒด์ŠคํŒ(N = ์„ธ๋กœ, M = ๊ฐ€๋กœ)

๋ณ‘๋“  ๋‚˜์ดํŠธ๊ฐ€ ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ 4๊ฐ€์ง€.

 

1๋ฒˆ. 2์นธ ์œ„๋กœ, 1์นธ ์˜ค๋ฅธ์ชฝ

2๋ฒˆ. 1์นธ ์œ„๋กœ, 2์นธ ์˜ค๋ฅธ์ชฝ

3๋ฒˆ. 1์นธ ์•„๋ž˜๋กœ, 2์นธ ์˜ค๋ฅธ์ชฝ

4๋ฒˆ. 2์นธ ์•„๋ž˜๋กœ, 1์นธ ์˜ค๋ฅธ์ชฝ

 

์ตœ๋Œ€ํ•œ ๋งŽ์€ ์นธ์„ ๋ฐฉ๋ฌธํ•˜๊ธธ ์›ํ•˜๊ณ , ๋งŒ์•ฝ ๋‚˜์ดํŠธ์˜ ์ด๋™ ํšŸ์ˆ˜๊ฐ€ 4๋ฒˆ ์ด์ƒ์ผ ๊ฒฝ์šฐ ์œ„ 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ตœ์†Œ ํ•œ๋ฒˆ์€ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

์กฐ๊ฑด์„ ์ž˜๋ณด๋ฉด ์œ„์™€ ์•„๋ž˜๋กœ๋Š” ๊ฐ€์ง€๋งŒ, ํ•ญ์ƒ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ„๋‹ค.

๋”ฐ๋ผ์„œ, ๊ฐ€๋กœ์˜ ์กฐ๊ฑด์„ ์ž˜ ๋”ฐ์ ธ๊ฐ€๋ฉฐ ํ’€์–ด์•ผ ํ•œ๋‹ค.

๋˜ํ•œ ๋‚˜์ดํŠธ์˜ ์ด๋™ ํšŸ์ˆ˜๊ฐ€ 4๋ฒˆ ์ด์ƒ์ด ๋˜๋ ค๋ฉด N์˜ ํฌ๊ธฐ๋Š” 3์ด์ƒ์ด์–ด์•ผ ํ•˜๊ณ , M์˜ ํฌ๊ธฐ๋Š” 7์ด์ƒ์ด์–ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์„ธ๋กœ์˜ ํฌ๊ธฐ(N์˜ ํฌ๊ธฐ)๊ฐ€ 1์ผ๋•Œ, 2์ผ๋•Œ, 3์ด์ƒ์ผ๋•Œ ์ด ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด ํ’€์—ˆ๋‹ค.

์„ธ๋กœ์˜ ํฌ๊ธฐ๊ฐ€ 2์ผ๋•Œ๋Š” ์œ„ ๋ฐฉ๋ฒ•์ค‘ 2๋ฒˆ, 3๋ฒˆ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์™œ๋ƒํ•˜๋ฉด 1๋ฒˆ๊ณผ 4๋ฒˆ์˜ ๊ฒฝ์šฐ ์œ„๋กœ 2์นธ์„ ๊ฐ€๊ฑฐ๋‚˜ ์•„๋ž˜๋กœ ๊ฐ€์•ผํ•˜์ง€๋งŒ, ์„ธ๋กœ์˜ ํฌ๊ธฐ๊ฐ€ 2์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฒด์ŠคํŒ์—์„œ ๋ฒ—์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์„ธ๋กœ์˜ ํฌ๊ธฐ๊ฐ€ 3์ผ๋•Œ๋Š”,

์ด๋™ ํšŸ์ˆ˜๊ฐ€ 4๋ฒˆ ์ด์ƒ์ด ๋˜๋Š๋ƒ, ์ด๋™ ํšŸ์ˆ˜๊ฐ€ 3๋ฒˆ์ด๋ƒ, 2๋ฒˆ์ด๋ƒ, 1๋ฒˆ์ด๋ƒ ๋“ฑ์— ๋”ฐ๋ผ ์กฐ๊ฑด์„ ๋‚˜๋ˆ ์ฃผ๋ฉด ๋œ๋‹ค.

 

 

 

ํ’€๋ฉด์„œ๋„ ๋„ˆ๋ฌด ๋ณต์žกํ•œ ๊ฒƒ ๊ฐ™์•„์„œ ๋‹ค๋ฅธ ํ’€์ด๋“ค์„ ์ฐธ๊ณ ํ•ด๋ดค๋‹ค.

import java.util.*;
public class Test{
	public static void main(String[] args){
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int m = scan.nextInt();
		int cnt =0;
		if(n==1)
			cnt = 1;
		else if(n==2)
			cnt = (int)Math.min(4, (m+1)/2);
		else
		{
			if(m<7)
				cnt = Math.min(4, m);
			else
				cnt = m-2;
		}
		System.out.println(cnt);
	}
}

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

class Main {
    static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {
        StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
        int n = Integer.parseInt(tokenizer.nextToken());
        int m = Integer.parseInt(tokenizer.nextToken());
        if (n == 1) {
            System.out.println(1);
        } else if (n == 2) {
            System.out.println(Math.min(4,(m+1)/2));
        } else {
            if (m <= 6) System.out.println(Math.min(4,m));
            else System.out.println(m-2);
        }
    }
}

 

ํ—ˆํ—ˆ ... 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€