https://www.acmicpc.net/problem/1863
๐ฉ๋ฌธ์
๐๋ฌธ์ ํด๊ฒฐ(์ค๋ต)
์ ํ ์ฝ์ง์์๋๋ฐ.....์ ์ฌ์ด๊ฑฐ์ผ๊น .....................์ฝ์ง์์ ๋ฌธ์ ์๋ค๊ณ ํ๋ค...
ํ๊ณ ๋๋ ๋ง๋๊ธฐ ๋ฌธ์ ์ ๋น์ทํ ๊ฒฐ์ธ๋ฐ ์ข ๋ ์ข๋ ์ด๋ ค์ด ๋๋??
1.์ผ์ชฝ๋ถํฐ ๊ณ ๋๊ฐ ๋ฐ๋๋ ์ง์ ์ ์ขํ๊ฐ ์ ๋ ฅ๋๋ฏ๋ก x๊ฐ์ด ์ค๋ณต๋๋ ๊ฒฝ์ฐ๊ฐ ์์
2.๋ฆฌ์คํธ์ y๊ฐ๋ง ์ ์ฅํ์ฌ ์นด์ดํธ ++
3.์ฒซ๋ฒ์งธ ์ ๋ ฅ๋ฐ์ y์ ์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ผ๋ก ์ง์
4.for๋ฌธ์ ๋๋ฉฐ ์ต์๊ฐ์ด ๊ฐ๊ฑฐ๋ ์ต๋๊ฐ์ด ๋ฐ๋๊ฒ ๋ ๊ฒฝ์ฐ +1์ฉ
(์ต์๊ฐ์ด ๊ฐ์ผ๋ฉด :๊ฐ์๋์ด๊ฑด๋ฌผ, ์ต๋๊ฐ์ด ๋ฐ๋๋ฉด : ๋ค๋ฅธ๋์ด ๊ฑด๋ฌผ)
5.y์ ๊ฐ์ด 0์ ๋ง๋๋ฉด ์ต์,์ต๋๊ฐ์ ์ด๊ธฐํํด์ค
์์ ๋ฅผ ๋๋ ธ์๋ ์ ๋ต์ด ๋์์ ์ ๊ทผ๋ฒ์ด ๋ง๋์ค ์์๋ค๊ณ ํ๋ค ใ ใ ใ ํ์ง๋ง ์ ์ถํ๊ณ ์ 7%?์์ ๋ฐ๋ก ์ค๋ต
์ค๊ฐ์ ๊ณ์ ์์์ ๋ฐ๊ฟ๋ดค์ง๋ง ํ๋ฆผ์ฐ์์ด์ฌ์ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๋ฅผ ๋ดค๋๋ ์คํ์ผ๋ก ํ๋ฉด๋๋ ๋ฌธ์ ์๋ค.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ArrayList<Integer> list = new ArrayList<>();
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
String[] str = br.readLine().split(" ");
list.add(Integer.parseInt(str[1]));
}
int min = list.get(0);
int max = list.get(0);
int cnt = 0;
for (int i = 1; i < list.size(); i++) {
if (list.get(i)>max) { //์ต๊ณ ๋์ด๊ฑด๋ฌผ
max = list.get(i);
cnt++;
}else if (list.get(i)==0) {
min =0;
max=0;
}else if (min==0 && min<list.get(i)) { //0๋ฐ๋ก ๋ค์ ๊ฑด๋ฌผ
min=list.get(i);
max=list.get(i);
} else if (min==list.get(i)) { //๊ฐ์ ๋์ด๊ฑด๋ฌผ
cnt++;
}
}
System.out.println(cnt);
}
}
๐๋ฌธ์ ํด๊ฒฐ(์ ๋ต) - Stack
์คํ์ LIFO ์ด๋ฏ๋ก ๋ฐ๋ก ์ง์ ๊ฑด๋ฌผ์ ๋์ด๋ฅผ ์ ์ ์๋ค.
1.์คํ์ด ๋น์ด์๋ค๋ฉด ๊ฐ์ ๋ฌด์กฐ๊ฑด ์ ์ฅํด์ค๋ค.
2.์ด์ ๊ฐ๊ณผ ์ ๋ ฅ๊ฐ์ ๋น๊ตํ๋ค.
3. ์ ๋ ฅํ ๊ฐ์ด ํฌ๋ฉด ์คํ์ ๋ฌด์กฐ๊ฑด ์ ์ฅํด์ค๋ค.
4.์ ๋ ฅํ ๊ฐ์ด ์์ผ๋ฉด ์คํ์์ ๊ฐ์ ๊บผ๋ด์ผํ๋ค.
4-1 ์ด์ ์ ์ ์ฅ๋ ๋ชจ๋ ๊ฐ๋ค๊ณผ ๋น๊ตํ์ฌ ์คํ์ด ๋น๊ฑฐ๋ ๊ธฐ์กด๊ฐ๋ณด๋ค ์์๋๊น์ง ๋ฌดํ ๋ฐ๋ณต์ ํ๋ค.
4-2 ๊ธฐ์กด๊ฐ๋ณด๋ค ์ ๋ ฅ๊ฐ์ด ์์ผ๋ฉด ๊ฑด๋ฌผ์++,ํด๋น๊ฑด๋ฌผ์ ๋์ด๋ฅผ ์ ์ธ์ํจ๋ค.
5.ํด๋น while๋ฌธ์ ํ์ถํ๊ณ ๋์๋ ์ ๋ ฅํ๊ฐ์ด ๊ธฐ์กด๊ฐ๋ณด๋ค ํฌ๋ฉด ์ ์ฅํด์ค์ผํจ!!
(์ด๋ถ๋ถ๋๋ฌธ์ ์ค๊ฐ๋ถ๋ถ์์ ๊ณ์ ํ๋ ธ์ต๋๋..)
๋ง์ฝ y๊ฐ 0์ด๊ฑฐ๋ ์ ๋ ฅํ ๊ฐ๊ณผ ๋์ด๊ฐ ๊ฐ๋ค๋ฉด ์ ์ฅํ์ง์๋๋ค.
y๊ฐ 0์ด๋ผ๋ฉด ๊ทธ ์์น์ ๊ฑด๋ฌผ์ด ์๋ค๋๊ฒ์ด๋๊น ์ ๋ค ๊ฑด๋ฌผ์ด ๋ฐ๋ก ์กด์ฌํจ์ ์ ์์๋ค.
๊ทธ๋์ y๊ฐ 0์ผ๋ ์คํ์ด ๋น์ด์์ง์๋ค๋ฉด ์ด์ ์ ๊ฑด๋ฌผ์ด ๊ณ์ฐ๋์ง ์์๊ฒ์ด๊ธฐ๋๋ฌธ์ ์คํ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํ๊ณ
์คํ์ ๋น์์ค๋ค.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
/*
* ์
๋ ฅ
์
๋ ฅ n
x์ขํ y์ขํ
*
* ์ถ๋ ฅ
๊ฒฝํ์นํฉ์ ์ต๋๊ฐ
* */
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Integer> stack = new Stack<>();
int n = Integer.parseInt(br.readLine());
int cnt =0;
for (int i = 0; i < n; i++) {
String[] str = br.readLine().split(" ");
int y = Integer.parseInt(str[1]);
if(y==0){ //0์ด๋ผ๋ฉด ,๋ค์๊ฐ์ ๋ฐ์
if(!stack.isEmpty()){
cnt+=stack.size(); //๊ธฐ์กด๊ฐ ์ ์ฅํ๊ณ ๋น์์ค
stack.clear();
continue;
}
continue;
}
if (!stack.isEmpty() && stack.peek()>y){ //๊ธฐ์กด๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด
while(!stack.isEmpty() && stack.peek()>y){ //์คํ์ด ๋น๊ฑฐ๋ ๊ธฐ์กด๊ฐ๋ณด๋ค ์์๋๊น์ง ๋ฐ๋ณต
cnt++;
stack.pop();
}
}
if(stack.isEmpty() || (!stack.isEmpty() &&stack.peek()<y)){ //์คํ์ด ๋น์ด์๊ฑฐ๋ ๊ธฐ์กด๊ฐ๋ณด๋ค ํฌ๋ฉด ์คํ์ ์ ์ฅ
stack.push(y);
}
}
if(!stack.isEmpty()){
cnt+=stack.size();
}
System.out.println(cnt);
}
}
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java]BOJ 2776 : ์๊ธฐ์ (0) | 2025.01.13 |
---|---|
[Java]BOJ 1388 : ๋ฐ๋ฅ์ฅ์ (0) | 2024.12.07 |
[Java]BOJ 1026 : ๋ณด๋ฌผ (0) | 2024.12.06 |
[Java]BOJ 16112 : 5์ฐจ ์ ์ง (0) | 2024.12.03 |
BOJ 11557 : Yangjojang of The Year -JAVA (1) | 2024.12.03 |