๋ฌธ์
์์ธํธ์ค ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
1๋ฒ๋ถํฐ N๋ฒ๊น์ง N๋ช ์ ์ฌ๋์ด ์์ ์ด๋ฃจ๋ฉด์ ์์์๊ณ , ์์ ์ ์ K(≤ N)๊ฐ ์ฃผ์ด์ง๋ค. ์ด์ ์์๋๋ก K๋ฒ์งธ ์ฌ๋์ ์ ๊ฑฐํ๋ค. ํ ์ฌ๋์ด ์ ๊ฑฐ๋๋ฉด ๋จ์ ์ฌ๋๋ค๋ก ์ด๋ฃจ์ด์ง ์์ ๋ฐ๋ผ ์ด ๊ณผ์ ์ ๊ณ์ํด ๋๊ฐ๋ค. ์ด ๊ณผ์ ์ N๋ช ์ ์ฌ๋์ด ๋ชจ๋ ์ ๊ฑฐ๋ ๋๊น์ง ๊ณ์๋๋ค. ์์์ ์ฌ๋๋ค์ด ์ ๊ฑฐ๋๋ ์์๋ฅผ (N, K)-์์ธํธ์ค ์์ด์ด๋ผ๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด (7, 3)-์์ธํธ์ค ์์ด์ <3, 6, 2, 7, 5, 1, 4>์ด๋ค.
N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ฉด (N, K)-์์ธํธ์ค ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์์๋๋ก ์ฃผ์ด์ง๋ค. (1 ≤ K ≤ N ≤ 5,000)
์ถ๋ ฅ
์์ ์ ๊ฐ์ด ์์ธํธ์ค ์์ด์ ์ถ๋ ฅํ๋ค.
์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ์ถ | ์ ๋ต | ๋งํ ์ฌ๋ | ์ ๋ต ๋น์จ |
---|---|---|---|---|---|
2 ์ด | 256 MB | 98841 | 49267 | 34696 | 48.684% |
https://www.acmicpc.net/problem/1158
ํ์ด
์ค๋ช
์ค๋ช ์ ๋ณด๋ฉด ์ ์ ์๊ฒ ์ง๋ง ์์ธํธ์ค ์๊ณ ๋ฆฌ์ฆ์ ์ง๋จ ์์ด์ ํ๊ธฐ ์ํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค... ๋๋
๋ฐฑ์ค์ ์ค๋ช
์ผ๋ก ์ดํดํ๋๊ฒ ์ข ์ด๋ ค์ ๋๋ฐ ๋ง์ฝ (7,3) ์ด๋ผ๋ฉด 7๋ช
์ค์ 3๋ฒ์งธ๋ฅผ ์ง์์ ์ผ๋ก ์ ์ธํด ๋๊ฐ๋ ๊ฒ์ด๋ค. ์ด๊ฒ์ ํ๋ ํ๋ก ํ๋ฉด ์ฝ๊ฒ ํ๋ฆด๊ฒ๊ฐ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
์ฝ๋
public class Main {
/*
1~N ๋ช
์ ์ฌ๋์ด ์์ผ๋ก ์์
K๊ฐ ์ฃผ์ด์ง๋ค. K๋ฒ์จฐ ์ฌ๋์ ์์๋๋ก ์ ๊ฑฐํ๋ค.
ํ์ฌ๋์ด ์ ๊ฑฐ๋๋ฉด ๋จ์์ฌ๋์ผ๋ก N๋ช
์ด ๋ชจ๋ ์ ๊ฑฐ๋ ๋๊น์ง ๊ณ์ํ๋ค.
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
//Queue ์ ์ธ
Queue<Integer> queue = new LinkedList<>();
for(int i=1; i<=N; i++){
queue.offer(i);
}
int count = 0;
String result = "<";
//queue๊ฐ ๋น๋ ๊น์ง
while (!queue.isEmpty()){
count++;
//์นด์ดํธ๊ฐ ์ฃผ์ด์ง K์ ์์ ๊ฐ์ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ๊ฐ์ ์ถ๊ฐํ๊ณ ์นด์ดํธ๋ฅผ ์ด๊ธฐํ
if(count == K){
result += queue.poll() + ", ";
count = 0;
}else { //count != K ์ธ๊ฒฝ์ฐ์๋ pollํ ๊ฐ์ ๋ค์ queue์ ์ถ๊ฐํ๋ค.
queue.offer(queue.poll());
}
}
result = result.substring(0, result.length()-2);
result += ">";
System.out.println(result);
}
}