๋ฐ์ํ
https://www.acmicpc.net/problem/1966
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int tc = Integer.parseInt(bf.readLine());
for(int t=0; t<tc; t++) {
StringTokenizer st = new StringTokenizer(bf.readLine());
int N = Integer.parseInt(st.nextToken()); // ๋ฌธ์์ ์
int x = Integer.parseInt(st.nextToken()); // ๋ช๋ฒ์งธ๋ก ์ธ์๋์๋์ง ๊ถ๊ธํ ๋ฌธ์
int ans = 0;
st = new StringTokenizer(bf.readLine()); // ๋ฌธ์์ ์ค์๋
LinkedList<Integer> q = new LinkedList<Integer>();
for(int i=0; i<N; i++)
q.add(Integer.parseInt(st.nextToken())); // ํ์ ๋ฌธ์์ ์ค์๋ ์ถ๊ฐ
while(!q.isEmpty()) {
boolean flag = true; // ํ์ฌ ๋ฌธ์๋ณด๋ค ์ค์๋๊ฐ ๋์ ๋ฌธ์๊ฐ ์๋์ง ์ฒดํฌ
for(int i=1; i<q.size(); i++) {
if(q.peek() < q.get(i)) { // ํ์ฌ ๋ฌธ์๋ณด๋ค ์ค์๋๊ฐ ๋์๊ฒฝ์ฐ
flag = false;
break;
}
}
// ๋ฌธ์๋ด ํ์ฌ ๋ฌธ์๋ณด๋ค ์ค์๋๊ฐ ๋์๊ฒ ์๋๊ฒฝ์ฐ
if(flag) {
ans ++; // ํ์ฌ ๋ชฉ๋ก ์ธ์ +1
q.poll(); // ํ์ฌ ๋ชฉ๋ก ์ธ์ํด์ ์ ๊ฑฐํ๊ธฐ
if(x == 0) break; // ํ์ฌ ์ธ์ํ๋ ค๋ ๋ฌธ์๊ฐ ๊ถ๊ธํ ๋ฌธ์์ธ๊ฒฝ์ฐ
else x --; // ํ์ฌ ์ธ์ํ๋ ค๋ ๋ฌธ์๊ฐ ๊ถ๊ธํ ๋ฌธ์๊ฐ ์๋๊ฒฝ์ฐ
}
// ๋ฌธ์๋ด ํ์ฌ ๋ฌธ์๋ณด๋ค ์ค์๋๊ฐ ๋์๊ฒ ์๋๊ฒฝ์ฐ -> ํ์ฌ ๋ฌธ์ ๊ฐ์ฅ ๋ค๋ก ์ด๋
else {
// ํ์ฌ ๋ชฉ๋ก ์ ๊ฑฐ ํ ๋ง์ง๋ง์ ๋ฃ๊ธฐ
int temp = q.poll();
q.add(temp);
/*
* ํ์ฌ ๋ฌธ์๊ฐ ๊ถ๊ธํ ๋ฌธ์์ธ๊ฒฝ์ฐ -> ๊ฐ์ฅ ๋ค๋ก ์ด๋ํ๋ฏ๋ก Queue์ ์ฌ์ด์ฆ-1๋ก ์ธ๋ฑ์ค ์ง์
* ๊ถ๊ธํ์ง ์์ ๋ฌธ์์ธ๊ฒฝ์ฐ -> ์ธ๋ฑ์ค -1
*/
if(x == 0) x = q.size()-1;
else x -= 1;
}
}
System.out.println(ans);
}
bf.close();
}
}
ํ์ด
์ค์๋๊ฐ ๋์ผํ ๋ฌธ์๋ค์๊ฒฝ์ฐ, ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํด์ผ๋ ์ง ๋ชจ๋ฅด๊ฒ ์ด์ ํ ๋ธ๋ก๊ทธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํ์ฌ Queue์ ๊ฐ์ฅ ์์ ์๋ ๋ฌธ์์ ‘์ค์๋’๋ฅผ ํ์ธํ๋ค.
- ๋๋จธ์ง ๋ฌธ์๋ค ์ค ํ์ฌ ๋ฌธ์๋ณด๋ค ์ค์๋๊ฐ ๋์ ๋ฌธ์๊ฐ ํ๋๋ผ๋ ์๋ค๋ฉด, ์ด ๋ฌธ์๋ฅผ ์ธ์ํ์ง ์๊ณ Queue์ ๊ฐ์ฅ ๋ค์ ์ฌ๋ฐฐ์น ํ๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ฐ๋ก ์ธ์๋ฅผ ํ๋ค.
ํด๊ฒฐ๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํ์ฌ ๋ฌธ์๋์ ์ค์๋๋ฅผ ํ์ธํ๊ณ , ํ์ฌ ๋ฌธ์๋ณด๋ค ์ค์๋๊ฐ ๋์๊ฒ ์๋์ง ์ฒดํฌํ๋ค.
- ๋ง์ฝ ํ์ฌ ๋ฌธ์๋ณด๋ค ์ค์๋๊ฐ ๋์๊ฒ ์๋๊ฒฝ์ฐ(flag = true) - <ํ์ฌ ๋ฌธ์์ ์ค์๋๊ฐ ๊ฐ์ฅ ๋์๊ฒฝ์ฐ>
- - ํ์ฌ ๋ชฉ๋ก์ ์ธ์ํ์ ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํค๊ณ , ํ์ฌ ์ธ์๋ฅผ ์ ๊ฑฐํ๋ค.
- - ๋ง์ฝ ํ์ฌ ๋ฌธ์๊ฐ ๋ด๊ฐ ๊ถ๊ธํดํ๋ ์ธ์์๊ฒฝ์ฐ while๋ฌธ์ ํ์ถํ๊ณ ,
- - ๋ง์ฝ ํ์ฌ ๋ฌธ์๊ฐ ๊ถ๊ธํดํ์ง ์๋ ์ธ์์๊ฒฝ์ฐ - ์ธ๋ฑ์ค๋ฅผ 1์ฉ ๊ฐ์ํ๋ค.(x--)
- ๋ง์ฝ ํ์ฌ ๋ฌธ์๋ณด๋ค ์ค์๋๊ฐ ๋์๊ฒ ์๋๊ฒฝ์ฐ(flag = false) - <ํ์ฌ ๋ฌธ์์ ์ซ์๊ฐ ๊ฐ์ฅ ๋์ง ์๋๊ฒฝ์ฐ>
- - ๋ง์ฝ ํ์ฌ ๋ฌธ์๊ฐ ๊ถ๊ธํดํ๋ ๋ฌธ์์ธ๊ฒฝ์ฐ -> ํ์ ๋ง์ง๋ง์ ๋ฃ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ size-1๋ก ์ค์ ํ๋ค.
- -- (๋ฐฐ์ด๊ณผ ๋์ผํ๊ฒ ์ธ๋ฑ์ค๋ 0๋ถํฐ ์์ํ๋ฏ๋ก, size-1๋ก ์ค์ ํ๋ค.)
- - ๋ง์ฝ ํ์ฌ ๋ฌธ์๊ฐ ๊ถ๊ธํ์ง ์์ ๋ฌธ์์ธ๊ฒฝ์ฐ -> ์ธ๋ฑ์ค๋ฅผ 1์ฉ ๊ฐ์ํ๋ค.(x--)
- - ๊ทธ ํ ํ์ฌ ๋ฌธ์๋ฅผ ์ ๊ฑฐ(poll()) ํ ๋ง์ง๋ง์ ์ฝ์ (add())ํ๋ค.
ํ์ฌ ๋ชฉ๋ก์ ์ธ์ํด์ ์นด์ดํธ๋ฅผ ์ฆ๊ฐ์ํค๊ณ , ํ์ฌ ์ธ์๋ฅผ ์ ๊ฑฐํ๋ค.
๋ฐ์ํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Java ๊ด๋ จ ๋ฉด์ ์ค๋น 1 (2) | 2020.03.26 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[Java] - (Level2)์ ๋ง๋๊ธฐ(์คํ/ํ) (0) | 2020.03.25 |
[Codeforces] 1191A: Tokitsukaze and Enhancement (0) | 2020.03.24 |
[๋ฐฑ์ค] 13904๋ฒ: ๊ณผ์ (๊ทธ๋ฆฌ๋) (0) | 2020.03.22 |
[Codeforces] 1300A: Non-zero (0) | 2020.03.21 |
๋๊ธ