Tags
- ๋๋น ์ฐ์ ํ์
- Brute Force Algorithm
- ๊ทธ๋ํ ์ด๋ก
- BFS
- LV2
- Java
- ์๋ฃ๊ตฌ์กฐ
- ๋ฐฑํธ๋ํน
- ๊ต์ฌ
- CodingTest
- ์ ์๋ก
- Study
- SpringBoot
- ์ ๋ ฌ
- ๊ตฌํ
- Dynamic Programming
- dfs
- Python
- queue
- ๊น์ด ์ฐ์ ํ์
- stack
- BOJ
- sort
- PGM
- ์ํ
- greedy
- ๊ทธ๋ํ ํ์
- ์๋ฎฌ๋ ์ด์
- DP
- ๋ฌธ์์ด
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_1377 : ๋ฒ๋ธ ์ํธ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ๋ฒ๋ธ ์ ๋ ฌ์ swap์ด ํ ๋ฒ๋ ์ผ์ด๋์ง ์์ ๋ฃจํ๊ฐ ์ธ์ ์ธ์ง ์์๋ด๋ ๋ฌธ์ ์ด๋ค.
- ๋ฒ๋ธ ์ ๋ ฌ์ ์ด์ค for๋ฌธ์์ ์์ชฝ for๋ฌธ ์ ์ฒด๋ฅผ ๋ ๋ swap์ด ์ผ์ด๋์ง ์์๋ค๋ ๊ฒ์ ์ด๋ฏธ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋๋ค๋ ์๋ฏธ์ด๊ณ , ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋ก ์ข
๋ฃํด์ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ผ ์ ์๋ค.
- ํ์ง๋ง ์ด ๋ฌธ์ ๋ N์ ์ต๋ ๋ฒ์๊ฐ 500,000์ด๋ฏ๋ก ๋ฒ๋ธ ์ ๋ ฌ๋ก ๋ฌธ์ ๋ฅผ ํ๋ฉด ์๊ฐ ์ด๊ณผ์ด๋ค.
- ์์ชฝ for๋ฌธ์ด ๋ช ๋ฒ ์ํ๋๋์ง ๊ตฌํ๋ ๋ค๋ฅธ ์์ด๋์ด๊ฐ ํ์ํ๋ค.
- ์์ชฝ ๋ฃจํ๋ 1์์ n-i๊น์ง, ์ฆ ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ฉด์ swap ์ํ
- ํน์ ๋ฐ์ดํฐ๊ฐ ์์ชฝ ๋ฃจํ์์ swap์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ ์ ์๋ ์ต๋ ๊ฑฐ๋ฆฌ๊ฐ 1์ด๋ผ๋ ๋ป
- ๋ฐ์ดํฐ ์ ๋ ฌ ์ index์ ์ ๋ ฌ ํ index๋ฅผ ๋น๊ตํด ์ผ์ชฝ์ผ๋ก ๊ฐ์ฅ ๋ง์ด ์ด๋ํ ๊ฐ์ ์ฐพ์ผ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ (์ ๋ ฌ์ ๋ง์ง๋ง ๊น์ง ์ด๋ํ ์ธ๋ฑ์ค๊ฐ ๊ฐ์ฅ ์ด๋ ํ์๊ฐ ๋ง์)
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
mData[] arr = new mData[n];
for (int i = 0; i < n; i++) arr[i] = new mData(Integer.parseInt(br.readLine()), i);
Arrays.sort(arr); // arr๋ฐฐ์ด ์ ๋ ฌ : O(nlogn)
int max = 0;
for (int i = 0; i < n; i++){
if (max < arr[i].index - i) // (์ ๋ ฌ ์ index - ์ ๋ ฌ ํ index) ๊ณ์ฐ์ ์ต๋๊ฐ ์ ์ฅ
max = arr[i].index - i;
}
System.out.println(max + 1);
}
}
class mData implements Comparable<mData> {
int value;
int index;
public mData(int value, int index) {
super();
this.value = value;
this.index = index;
}
@Override
public int compareTo(mData o) { // value ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ธฐ
return this.value - o.value;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์๋ฐ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ sort() ํจ์๋ก ๋ฐฐ์ด์ ์ ๋ ฌ : O(nlogn)
- ๊ฐ ๋ฐ์ดํฐ ๋ง๋ค ์ ๋ ฌ ์ index ๊ฐ์์ ์ ๋ ฌํ index ๊ฐ์ ๋นผ๊ณ ์ต๋๊ฐ์ ์ฐพ๊ธฐ
- ๊ทธ๋ฆฌ๊ณ swap์ด ์ผ์ด๋์ง ์์ ๋ฐ๋ณต๋ฌธ์ด ํ ๋ฒ ๋ ์คํ๋๋ ๊ฒ์ ๊ฐ์ํด ์ต๋๊ฐ์ 1์ ๋ํด์ ์ถ๋ ฅ
- ์ ๋ ฌ ์ index๋ฅผ ์ ์ฅํ๊ธฐ ์ํ mData ํด๋์ค ์ ์
- Comparable ์ธํฐํ์ด์ค๋ฅผ ์ ์ฉ
- compareTo() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํด์ Arrays.sort()์์ value ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํ ์ ์๋๋ก ํจ
- ๋ฐํ๊ฐ์ด ์์์ด๋ฉด ์ธ์๊ฐ ๋ ๋น ๋ฅธ ์
- ๋ฐํ๊ฐ์ด ์์์ด๋ฉด ํด๋์ค ๋ฉค๋ฒ ๋ณ์๊ฐ ๋ ๋น ๋ฅธ ์
- mData ์์ฑ์์์ ๋ถ๋ชจ ํด๋์ค์ ์์ฑ์๋ ํธ์ถํด์ฃผ์ด์ผ ํจ
- compareTo() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ํด์ Arrays.sort()์์ value ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํ ์ ์๋๋ก ํจ
- Comparable ์ธํฐํ์ด์ค๋ฅผ ์ ์ฉ
๐ธ end ๐ธ
- ์๊ฐํ๋ ๊ฒ ๋ณด๋ค ๋ ์ด๋ ค์ ๋ ๋ฌธ์ ์๋ค. ์๊ฐ์ง๋ ๋ชปํ ํ์ด๋ฒ์ด ์ ์ฉ๋์ ๊ต์ฌ ์์ด๋ ํ์ง ๋ชปํ์ ๊ฒ ๊ฐ๋ค.
- ๋ฒ๋ธ ์ ๋ ฌ ์์ ์ฝ๋๊ฐ ์ฃผ์ด์ ธ์, ๋จ์ ๋ฒ๋ธ ์ ๋ ฌ ๊ตฌํ์ธ๊ฐ? ์ด๊ฒ ์ ๊ณจ๋2์ง? ํ๋๋ฐ ์์ ์๋ชป ์๊ฐํ๋ค.
- ๋ฒ๋ธ ์ ๋ ฌ์ ์์ ํ ์ดํดํ๊ณ ์๋์ง ๋ฌผ์ผ๋ฉฐ, ์ ๋ ฌ ์๋ฃ๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ์ผ๋ก swap์ด ์๋ ๋ฃจํ ์ฐพ๋ ๋ฐฉ๋ฒ์ ํ์ฉํ ๋ฌธ์ ์๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ ๋์๊ฐ ์ ๋ ฌ ์๋ฃ๊ฐ ๋ช ๋ฒ์งธ ๋ฃจํ์ธ์ง ํ์ธํ๊ธฐ ์ํด, ์ธ๋ฑ์ค ์ฐจ์ด์ ์ต๋๊ฐ์ด๋ผ๋ ์๋ก์ด ์ ๊ทผ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
- ์ด์ ์ ๋ฒ๋ธ์ ๋ ฌ์ ๊ฐ๋จํ ์์๋ฅผ ํ๊ณ ์์, ๋ฌธ์ ์ ์ฃผ์ด์ง c++์ฝ๋์ ๋ฒ๋ธ์ ๋ ฌ์์ ๋ฐ๊นฅ์ชฝ for๋ฌธ์ ์ธ๋ฑ์ค ๋ฒ์๊ฐ N+1 ๊น์ง์ธ ๊ฑธ๋ณด๊ณ ์คํ์ธ๊ฐ ์๊ฐํ๋ค.
- ํ์ง๋ง ๋ช ๋ฒ์ฌ ๋ฃจํ์ธ์ง ์ถ๋ ฅํ๊ธฐ ์ํด์ ๋ง์ง๋ง 1ํ ๋ ๋ฐ๋ณต์ ์ํ ๊ฒ์ด์๊ณ , ๊ณจ๋ 2๋ฌธ์ ๋ฅผ ๋ง๋งํ๊ฒ ๋ณธ ๋ด๊ฐ ๋ถ๋๋ฌ์์ก๋ค...
- ์ด ๋ถ๋ถ์์ ๋ง์ง๋ง ์ถ๋ ฅ์ +1์ ํด์ผํ๋ ์์ ๋ ์ถ๊ฐ์ํค๋๊ฒ ์ฌ๋ฏธ์์๋ค.
- ๋ฒ๋ธ ์ ๋ ฌ์ ํ์ฉ์ ๋ณด๋ ์ดํด๋ ์ ๋๋ฉด์๋ ์ด๋ป๊ฒ ์ด๋ฐํ์ด๊ฐ ์์ง ํ๋ฉด์ ์์ฃผ ํฅ๋ฏธ๋กญ๊ณ ๊ฐํ๊ฐ ์๋ก์ด ๋ฌธ์ ์๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_10825 : ๊ตญ์์ (0) | 2022.11.10 |
---|---|
BOJ_2535 : ์์์ ์ ๋ณด์ฌ๋ฆผํผ์๋ (0) | 2022.11.09 |
BOJ_2750 : ์ ์ ๋ ฌํ๊ธฐ (0) | 2022.11.08 |
BOJ_11286 : ์ ๋๊ฐ ํ (0) | 2022.11.07 |
BOJ_2164 : ์นด๋2 (0) | 2022.11.07 |