https://www.acmicpc.net/problem/1021
μ½λ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int N = Integer.parseInt(st.nextToken()); // νμ ν¬κΈ°
int M = Integer.parseInt(st.nextToken()); // λ½μλ΄λ €κ³ νλ μμ κ°μ
int[] arr = new int[M]; // λ½μλ΄λ €κ³ νλ μμ μμΉ
int min = 0; // 2λ², 3λ² μ°μ°μ μ΅μκ°
LinkedList<Integer> list = new LinkedList<Integer>();
st = new StringTokenizer(bf.readLine());
for(int i=0; i<M; i++)
arr[i] = Integer.parseInt(st.nextToken());
for(int i=1; i<=N; i++)
list.add(i);
for(int i=0; i<arr.length; i++) {
// νμ¬ λ¦¬μ€νΈμ κ°μ΄ λ°λ‘ λ½μλ΄λ €κ³ νλ κ°μΌλ
if(arr[i] == list.peek()) {
list.remove();
continue;
}
// λ½μλ΄λ €κ³ νλ μλ₯Ό 2λ²μ°μ°(μΌμͺ½μΌλ‘ μ΄λ)μ νλ κ²μ΄ λ μ΄λμΌλ
if(list.indexOf(arr[i]) <= list.size()/2 ) {
// μΌμͺ½μΌλ‘ νμΉΈμ© λ°κΈ° - νμ¬κ° μ κ±°νκ³ λ§μ§λ§μ λ£κΈ°
while(list.peek() != arr[i]) {
int temp = list.remove();
list.add(temp);
min ++;
}
}
// λ½μλ΄λ €κ³ νλ μλ₯Ό 3λ²μ°μ°(μ€λ₯Έμͺ½μΌλ‘ μ΄λ)μ νλ κ²μ΄ λ μ΄λμΌλ
else {
// μ€λ₯Έμͺ½μΌλ‘ νμΉΈμ© λ°κΈ° - κ°μ₯ λ§μ§λ§κ°μ νμ¬κ°μΌλ‘ λ£κΈ°
while(list.peek() != arr[i]) {
int temp = list.get(list.size()-1);
list.add(0, temp);
list.remove(list.size()-1);
min ++;
}
}
list.remove(); // λ½μλ΄λ €κ³ νλ μκ° μ²«λ²μ§Έ μμΉλ‘ μ€λ©΄ λ½μλΈλ€.
}
System.out.println(min);
bf.close();
}
}
νμ΄
λ¬Έμ λ₯Ό μ μ΄ν΄ν΄μΌ νλ€.
νμ ν¬κΈ°κ° Nκ°μ΄λ©΄, 1 ~ NκΉμ§μ κ°μ΄ λ€μ΄κ°λ€.
κ·Έ ν 1~NκΉμ§μ μ μ€ λ½μΌλ €κ³ νλ κ°μ(M)κ³Ό λ½μΌλ €κ³ νλ μμμ μμΉκ° μ£Όμ΄μ§λ€.
2λ², 3λ² μ°μ°μ΄ μ΅μκ°μ΄ λλλ‘ λ½μμΌνλλ° 2λ², 3λ² μ°μ°μ 쑰건μ λ€μκ³Ό κ°λ€.
2. μΌμͺ½μΌλ‘ ν μΉΈ μ΄λμν¨λ€. μ΄ μ°μ°μ μννλ©΄, a1, ..., ak κ° a2, ..., ak, a1 μ΄ λλ€.
3. μ€λ₯Έμ‘±μΌλ‘ ν μΉΈ μ΄λμν¨λ€. μ΄ μ°μ°μ μννλ©΄ a1, ..., ak κ° ak, a1, ..., ak-1 μ΄ λλ€.
μ¦ λ½μΌλ €κ³ νλ μμμ μμΉκ° μΌμͺ½μΌλ‘ μ΄λμν€λ κ²μ΄ μ΅μκ°μΈμ§, μ€λ₯Έμͺ½μΌλ‘ μ΄λμν€λ κ²μ΄ μ΅μκ°μΈμ§ λΉκ΅ν΄κ°λ©° μ΅μκ°μ΄ λμ€λλ‘ νμ΄μΌνλ€.
N = 10 μΌλ,
list = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10] μ΄ λλ€.
μ¬κΈ°μ 1 ~ 6λ 2λ²μ°μ°(μΌμͺ½μΌλ‘ μ΄λ)μ μννλ κ²μ΄ μ΅μκ°μ΄κ³ ,
6 ~ 10μ 3λ²μ°μ°(μ€λ₯Έμͺ½μΌλ‘ μ΄λ)μ μννλ κ²μ΄ μ΅μκ°μ΄λ€.
μ¦ λ½μΌλ €κ³ νλ μμΉμ μΈλ±μ€κ°μ΄ list μ¬μ΄μ¦μ λ°λ³΄λ€ μκ±°λ κ°μλ -> μΌμͺ½μ΄λ,
list μ¬μ΄μ¦μ λ°λ³΄λ€ ν΄λ -> μ€λ₯Έμͺ½μΌλ‘ μ΄λ νλκ²μ΄ μ΅μκ°μ΄ λλ€.
μΌμͺ½μΌλ‘ μ΄λνλ μ°μ°μ νμ¬κ°μ μ κ±°νκ³ , μ κ±°ν νμ¬κ°μ listμ λ£μ΄μ£Όλ©΄ λλ€.
μ€λ₯Έμͺ½μΌλ‘ μ΄λνλ μ°μ°μ 리μ€νΈμ λ§μ§λ§κ°μ μ κ±°νκ³ , 리μ€νΈμ κ°μ₯ 첫λ²μ§Έμ μ κ±°ν κ°μ λ£μ΄μ£Όλ©΄ λλ€.
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Codeforces] 1316A: Grade Allocation (0) | 2020.04.07 |
---|---|
[λ°±μ€] 10709λ²: κΈ°μμΊμ€ν°(ꡬν) (0) | 2020.04.07 |
[λ°±μ€] 10026λ²: μ λ‘μμ½(DFS) (0) | 2020.04.06 |
[Codeforces] 1136A: Nastya is Reading a Book (0) | 2020.04.06 |
[Codeforces] 1093A: Dice Rolling (0) | 2020.04.02 |
λκΈ