[BOJ 1201] NMK

0๏ธโƒฃ1๏ธโƒฃยท2021๋…„ 4์›” 29์ผ
0

BOJ

๋ชฉ๋ก ๋ณด๊ธฐ
2/5

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

๐Ÿ’ก ์ ‘๊ทผ๋ฐฉ๋ฒ•

์ด ๋ฌธ์ œ๋Š” ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค, 1 ~ N๊นŒ์ง€ ๋‚˜์—ด๋œ ์ˆ˜์—ด์„ ์ƒ๊ฐํ•ด๋ณด์ž

M๊ฐœ์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. 1 ~ N๊นŒ์ง€ ๋‚˜์—ด๋œ ์ˆ˜๋“ค์„ ์ตœ๋Œ€ํ•œ ์œ ์ง€ํ•˜๋ฉด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ? M๊ฐœ ๊ทธ๋ฃน์„ ๋‚˜๋ˆ ์„œ, ๊ทธ๋ฃน ๋‚ด์—์„œ ํ•œ ์ˆซ์ž์”ฉ ๋ฝ‘์œผ๋ฉด M๊ฐœ์˜ ์˜ค๋ฆ„์ฐจ์ˆœ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ, ๊ทธ๋ฃน ๋‚ด์—์„œ ํ•œ ์ˆซ์ž์”ฉ ๋ฝ‘๋Š” ๊ฑด ๋ฌธ์ œ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

๊ทธ๋ฃน์˜ ๋ชจ๋“  ์ˆซ์ž๋“ค์„ ์—ญ์ˆœ์‹œํ‚ค๋ฉด, ๊ทธ๋ฃน ๋‚ด์—์„œ ํ•œ ์ˆซ์ž์”ฉ ๋ฝ‘์•„์„œ M๊ฐœ์˜ ์˜ค๋ฆ„ ์ฐจ์ˆœ์„ ๋งŒ๋“œ๋Š”๊ฑด ์œ ํšจํ•˜๋‹ค.

K๊ฐœ์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์€ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค๊นŒ?

๊ทธ๋ฃน์„ ์—ญ์ˆœํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, ๊ทธ๋ฃน ๊ฐœ์ˆ˜๊ฐ€ K๊ฐœ๊ฐ€ ๋œ๋‹ค๋ฉด K๊ฐœ์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์ด ์กด์žฌํ• ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฃน๋‚ด์— K๊ฐœ๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ํ•˜๋Š” ๊ฒƒ์€ ์‰ฌ์šด๋ฐ, ์–ด๋–ป๊ฒŒ M๊ฐœ์˜ ๊ทธ๋ฃน์„ ๋ณด์žฅ์‹œ์ผœ์ค„์ˆ˜ ์žˆ์„๊นŒ?

N = 13, M =5, K = 4์ธ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•ด๋ณด์ž. ์—ฌ๊ธฐ์„œ ์ตœ๋Œ€ K๊ฐœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ๊ทธ๋ฃน์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

1 ~ 4๊นŒ์ง€ 1๊ฐœ์˜ ๊ทธ๋ฃน์„ ๋งŒ๋“ค์—ˆ๋‹ค.

5 ~ 8๊นŒ์ง€ 1๊ฐœ์˜ ๊ทธ๋ฃน์„ ๋งŒ๋“ค์—ˆ๋‹ค.

9 ~ 12๊นŒ์ง€ 1๊ฐœ์˜ ๊ทธ๋ฃน์„ ๋งŒ๋“ค์—ˆ์ง€๋งŒ, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. M๊ฐœ์˜ ๊ทธ๋ฃน์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”๋ฐ, ํ˜„์žฌ ๋‚˜๋จธ์ง€ ๊ฒƒ์„ ํฌํ•จํ•œ๋‹ค๊ณ  ํ•ด๋„ M๊ฐœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.

M๊ฐœ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š”, 9 ~ 11๊นŒ์ง€ 1๊ฐœ์˜ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

K๊ฐœ๋ฅผ ์„ ํƒํ• ์ง€ OR K๊ฐœ๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋ฅผ ์„ ํƒํ•ด์„œ M๊ฐœ์˜ ๊ทธ๋ฃน์„ ๋งŒ๋“ค์ง€ ๊ฒฐ์ •

๊ณ„์† K๊ฐœ๋ฅผ ๊ฐ€์ง„ ๊ทธ๋ฃน๋“ค์„ ๋งŒ๋“ค๋ฉด ์›ํ•˜๋Š” M๊ฐœ์˜ ๊ทธ๋ฃน์„ ๋งŒ๋“ค์ง€ ๋ชปํ•œ๋‹ค. K๊ฐœ๋ฅผ ๊ฐ€์ง„ ๊ทธ๋ฃน๋“ค์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ฉˆ์ถฐ์•ผ ํ•˜๋Š” ์ˆœ๊ฐ„์ด ์กด์žฌํ•œ๋‹ค.

K๊ฐœ ์ˆซ์ž๋ฅผ ๊ฐ€์ง„ ๊ทธ๋ฃน์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ฉˆ์ถฐ์•ผ ํ•˜๋Š” ์ˆœ๊ฐ„?

i๋ฒˆ์งธ ๊ทธ๋ฃน์˜ ๋งˆ์ง€๋ง‰ ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ธ๋ฑ์Šค๊ฐ€ N - M + i ์ธ๋ฑ์Šค๋ณด๋‹ค ์ปค์ง€๋Š” ์ˆœ๊ฐ„ ๋ฉˆ์ถฐ์•ผ ํ•œ๋‹ค. N - M + i + 1์ธ๋ฑ์Šค๋Š” 1๊ฐœ ์ˆซ์ž๋ฅผ ๊ฐ€์ง„ ๊ทธ๋ฃน M - i๊ฐœ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์‹œ์ž‘ ์ธ๋ฑ์Šค์ด๋‹ค.

N - M + i ์ธ๋ฑ์Šค๋ณด๋‹ค ํฐ ๊ฐ’์ด ์„ ํƒ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

1๊ฐœ์”ฉ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฐœ์ˆ˜์ธ M - i๋ณด๋‹ค ์ž‘์•„์ง€๋ฏ€๋กœ, ํ˜„์žฌ ๋งŒ๋“ค์–ด์ง„ i๊ฐœ์˜ ๊ทธ๋ฃน์—์„œ M - i - @๋ฅผ ๋”ํ•˜๋ฉด M - @์ด๋ฏ€๋กœ M๋ณด๋‹ค ์ž‘์•„์งˆ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

๐Ÿ’ก ํ•ด์„ค์ฝ”๋“œ

import java.util.*;
import java.lang.*;
import java.io.*;

class Main
{
	static void rotate(int[] arr, int start, int end){
		while(start < end){
			int tmp = arr[start];
			arr[start] = arr[end];
			arr[end] = tmp;
			
			start++;
			end--;
		}
	}
	
	public static void main (String[] args) throws java.lang.Exception
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String[] sArr = br.readLine().split(" ");
		int[] arr;
		
		int N, M, K;
		
		N = Integer.valueOf(sArr[0]);
		M = Integer.valueOf(sArr[1]);
		K = Integer.valueOf(sArr[2]);
		
		arr = new int[N + 1];
		for(int i = 1; i <= N; i++) arr[i] = i;
		
		if(!((M - 1) <= (N - K) && (N - K) <= K * (M - 1))){
			System.out.println("-1");
			return;
		}
	
		int idx = 1;
		for(int i = 1; i <= M; i++){
			int tmp = Math.min(idx + K, (N + 1) - M + i);
			rotate(arr, idx, tmp - 1);
			if(tmp != idx + K) break;
			idx = tmp;
		}
	
		for(int i = 1; i < arr.length; i++)
			System.out.print(arr[i] + " ");
		System.out.println();
	}
}

0๊ฐœ์˜ ๋Œ“๊ธ€