1. ์ฌ๋ฐ๋ฅธ ๊ดํธ
2. ๊ดํธ๋ฌธ์์ ๊ฑฐ
3. ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ(์นด์นด์ค)
4. ํ์์ ์ฐ์ฐ(postfix)
5. ์ ๋ง๋๊ธฐ
6. ๊ณต์ฃผ๊ตฌํ๊ธฐ
7. ๊ต์ก๊ณผ์ ์ค๊ณ
8. ์๊ธ์ค
1. ์ฌ๋ฐ๋ฅธ ๊ดํธ
import java.util.*;
public class Main {
public String solution(String str){
String answer="YES";
Stack<Character> stack=new Stack<>();
for(char x:str.toCharArray()){ // ๋ซ๋ ๊ดํธ๊ฐ ๋ง์๋
if(x=='(') stack.push(x);
else{ // ๋ซ๋ ๊ดํธ ์ผ๋
if(stack.isEmpty()) return "NO";// stack์ด ๋น์ด์๋ => "NO"
stack.pop(); // ๊ทธ๋ ์ง ์๋ค๋ฉด ์ ์ผ ์๋จ์ ์๋๊ฒ ์ ๊ฑฐ
}
}
if(!stack.isEmpty()) // ์์ง ๋น์ด์์ง ์๋ค๋ฉด
return "NO";
return answer;
}
public static void main(String[] args) {
Main T=new Main();
Scanner kb=new Scanner(System.in);
String str=kb.next();
System.out.print(T.solution(str));
}
}
2. ๊ดํธ๋ฌธ์์ ๊ฑฐ
import java.util.*;
public class Main {
public String solution(String str){
String answer="";
Stack<Character> stack=new Stack<>();
for(char x : str.toCharArray()){
if(x==')'){ // ๋ซ๋๊ดํธ๋ฉด
while(stack.pop()!='('); // ์ฌ๋ ๊ดํธ ์๋๋๊น์ง pop
}
else // ๋ซ๋ ๊ดํธ๊ฐ ์๋๋ฉด push
stack.push(x);
}
for(int i=0; i<stack.size(); i++)
answer+=stack.get(i);
return answer;
}
public static void main(String[] args) {
Main T=new Main();
Scanner kb=new Scanner(System.in);
String str=kb.nextLine();
System.out.print(T.solution(str));
}
}
3. ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ(์นด์นด์ค)
์ค๋ช
๊ฒ์๊ฐ๋ฐ์์ธ ์ฃ ๋ฅด๋๋ ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ธฐ๊ณ๋ฅผ ๋ชจ๋ฐ์ผ ๊ฒ์์ผ๋ก ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค.
์ฃ ๋ฅด๋๋ ๊ฒ์์ ์ฌ๋ฏธ๋ฅผ ๋์ด๊ธฐ ์ํด ํ๋ฉด ๊ตฌ์ฑ๊ณผ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ด ๊ฒ์ ๋ก์ง์ ๋ฐ์ํ๋ ค๊ณ ํฉ๋๋ค.
๊ฒ์ ํ๋ฉด์ 1 x 1 ํฌ๊ธฐ์ ์นธ๋ค๋ก ์ด๋ฃจ์ด์ง N x N ํฌ๊ธฐ์ ์ ์ฌ๊ฐ ๊ฒฉ์์ด๋ฉฐ ์์ชฝ์๋ ํฌ๋ ์ธ์ด ์๊ณ ์ค๋ฅธ์ชฝ์๋ ๋ฐ๊ตฌ๋๊ฐ ์์ต๋๋ค.
(์ ๊ทธ๋ฆผ์ 5 x 5 ํฌ๊ธฐ์ ์์์ ๋๋ค). ๊ฐ ๊ฒฉ์ ์นธ์๋ ๋ค์ํ ์ธํ์ด ๋ค์ด ์์ผ๋ฉฐ ์ธํ์ด ์๋ ์นธ์ ๋น์นธ์ ๋๋ค.
๋ชจ๋ ์ธํ์ 1 x 1 ํฌ๊ธฐ์ ๊ฒฉ์ ํ ์นธ์ ์ฐจ์งํ๋ฉฐ ๊ฒฉ์์ ๊ฐ์ฅ ์๋ ์นธ๋ถํฐ ์ฐจ๊ณก์ฐจ๊ณก ์์ฌ ์์ต๋๋ค.
๊ฒ์ ์ฌ์ฉ์๋ ํฌ๋ ์ธ์ ์ข์ฐ๋ก ์์ง์ฌ์ ๋ฉ์ถ ์์น์์ ๊ฐ์ฅ ์์ ์๋ ์ธํ์ ์ง์ด ์ฌ๋ฆด ์ ์์ต๋๋ค. ์ง์ด ์ฌ๋ฆฐ ์ธํ์ ๋ฐ๊ตฌ๋์ ์์ด๊ฒ ๋๋ ๋ฐ,
์ด๋ ๋ฐ๊ตฌ๋์ ๊ฐ์ฅ ์๋ ์นธ๋ถํฐ ์ธํ์ด ์์๋๋ก ์์ด๊ฒ ๋ฉ๋๋ค.
๋ค์ ๊ทธ๋ฆผ์ [1๋ฒ, 5๋ฒ, 3๋ฒ] ์์น์์ ์์๋๋ก ์ธํ์ ์ง์ด ์ฌ๋ ค ๋ฐ๊ตฌ๋์ ๋ด์ ๋ชจ์ต์ ๋๋ค.
๋ง์ฝ ๊ฐ์ ๋ชจ์์ ์ธํ ๋ ๊ฐ๊ฐ ๋ฐ๊ตฌ๋์ ์ฐ์ํด์ ์์ด๊ฒ ๋๋ฉด ๋ ์ธํ์ ํฐ๋จ๋ ค์ง๋ฉด์ ๋ฐ๊ตฌ๋์์ ์ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค.
์ ์ํ์์ ์ด์ด์ [5๋ฒ] ์์น์์ ์ธํ์ ์ง์ด ๋ฐ๊ตฌ๋์ ์์ผ๋ฉด ๊ฐ์ ๋ชจ์ ์ธํ ๋ ๊ฐ๊ฐ ์์ด์ง๋๋ค.
ํฌ๋ ์ธ ์๋ ์ ์ธํ์ด ์ง์ด์ง์ง ์๋ ๊ฒฝ์ฐ๋ ์์ผ๋ ๋ง์ฝ ์ธํ์ด ์๋ ๊ณณ์์ ํฌ๋ ์ธ์ ์๋์ํค๋ ๊ฒฝ์ฐ์๋ ์๋ฌด๋ฐ ์ผ๋ ์ผ์ด๋์ง ์์ต๋๋ค.
๋ํ ๋ฐ๊ตฌ๋๋ ๋ชจ๋ ์ธํ์ด ๋ค์ด๊ฐ ์ ์์ ๋งํผ ์ถฉ๋ถํ ํฌ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. (๊ทธ๋ฆผ์์๋ ํ๋ฉดํ์ ์ ์ฝ์ผ๋ก 5์นธ๋ง์ผ๋ก ํํํ์์)
๊ฒ์ ํ๋ฉด์ ๊ฒฉ์์ ์ํ๊ฐ ๋ด๊ธด 2์ฐจ์ ๋ฐฐ์ด board์ ์ธํ์ ์ง๊ธฐ ์ํด ํฌ๋ ์ธ์ ์๋์ํจ ์์น๊ฐ ๋ด๊ธด ๋ฐฐ์ด moves๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋,
ํฌ๋ ์ธ์ ๋ชจ๋ ์๋์ํจ ํ ํฐํธ๋ ค์ ธ ์ฌ๋ผ์ง ์ธํ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ๋ ฅ
์ฒซ ์ค์ ์์ฐ์ N(5<=N<=30)์ด ์ฃผ์ด์ง๋๋ค.
๋ ๋ฒ์งธ ์ค๋ถํฐ N*N board ๋ฐฐ์ด์ด ์ฃผ์ด์ง๋๋ค.
board์ ๊ฐ ์นธ์๋ 0 ์ด์ 100 ์ดํ์ธ ์ ์๊ฐ ๋ด๊ฒจ์์ต๋๋ค.
0์ ๋น ์นธ์ ๋ํ๋ ๋๋ค.
1 ~ 100์ ๊ฐ ์ซ์๋ ๊ฐ๊ธฐ ๋ค๋ฅธ ์ธํ์ ๋ชจ์์ ์๋ฏธํ๋ฉฐ ๊ฐ์ ์ซ์๋ ๊ฐ์ ๋ชจ์์ ์ธํ์ ๋ํ๋ ๋๋ค.
board๋ฐฐ์ด์ด ๋๋ ๋ค์์ค์ moves ๋ฐฐ์ด์ ๊ธธ์ด M์ด ์ฃผ์ด์ง๋๋ค.
๋ง์ง๋ง ์ค์๋ moves ๋ฐฐ์ด์ด ์ฃผ์ด์ง๋๋ค.
moves ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 1 ์ด์ 1,000 ์ดํ์ ๋๋ค.
moves ๋ฐฐ์ด ๊ฐ ์์๋ค์ ๊ฐ์ 1 ์ด์์ด๋ฉฐ board ๋ฐฐ์ด์ ๊ฐ๋ก ํฌ๊ธฐ ์ดํ์ธ ์์ฐ์์ ๋๋ค.
์ถ๋ ฅ
์ฒซ ์ค์ ํฐํธ๋ ค์ ธ ์ฌ๋ผ์ง ์ธํ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
import java.util.*;
public class Main {
public int solution(int[][] board, int[] moves){
int answer=0;
Stack<Integer> stack=new Stack<>();
for(int pos : moves){ // pos = ํฌ๋ ์ธ ์์น
for(int i=0; i<board.length; i++){// board.length : ํํฌ๊ธฐ
if(board[i][pos-1]!=0) { // ์ธํ๋ฐ๊ฒฌ
int tmp = board[i][pos - 1]; // tmp์ ์ธํ ์์๋ณด๊ด
board[i][pos-1]=0; // ์ธํ์๋ฆฌ์ 0
if(!stack.isEmpty() && tmp==stack.peek()) { // stack์ด ๋น์ด์์ง ์์ผ๋ฉด์ ์ ์ผ ์๋จ๊ณผ ๊ฐ์ด ๊ฐ๋ค๋ฉด
answer += 2;
stack.pop(); // ์๋จ ์ ๊ฑฐ
}else stack.push(tmp);
break;
}
}
}
return answer;
}
public static void main(String[] args) {
Main T=new Main();
Scanner kb=new Scanner(System.in);
int n=kb.nextInt();
int[][] board=new int[n][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
board[i][j]=kb.nextInt();
}
}
int m=kb.nextInt();
int[] moves=new int[m];
for(int i=0; i<m; i++) moves[i]=kb.nextInt();
System.out.println(T.solution(board,moves));
}
}
4. ํ์์ ์ฐ์ฐ(postfix)
import java.util.*;
public class Main {
public int solution(String str){
int answer=0;
Stack<Integer> stack=new Stack<>();
for(char x: str.toCharArray()){
if(Character.isDigit(x)) stack.push(x-48); // ์์คํค
else{ // ์ฐ์ฐ์๋ผ๋ฉด
int rt=stack.pop();
int lt=stack.pop();
if(x=='+') stack.push(lt+rt);
else if(x=='-') stack.push(lt-rt);
else if(x=='*') stack.push(lt*rt);
else if(x=='/') stack.push(lt/rt);
}
}
answer=stack.get(0); // 0 ๋ฒ์ ์๋๊ฑฐ return
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.next();
System.out.println(T.solution(str));
}
}
5. ์ ๋ง๋๊ธฐ
์ค๋ช
์ฌ๋ฌ ๊ฐ์ ์ ๋ง๋๊ธฐ๋ฅผ ๋ ์ด์ ๋ก ์ ๋จํ๋ ค๊ณ ํ๋ค. ํจ์จ์ ์ธ ์์ ์ ์ํด์ ์ ๋ง๋๊ธฐ๋ฅผ ์๋์์ ์๋ก ๊ฒน์ณ ๋๊ณ ,
๋ ์ด์ ๋ฅผ ์์์ ์์ง์ผ๋ก ๋ฐ์ฌํ์ฌ ์ ๋ง๋๊ธฐ๋ค์ ์๋ฅธ๋ค. ์ ๋ง๋๊ธฐ์ ๋ ์ด์ ์ ๋ฐฐ์น๋ ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ค.
• ์ ๋ง๋๊ธฐ๋ ์์ ๋ณด๋ค ๊ธด ์ ๋ง๋๊ธฐ ์์๋ง ๋์ผ ์ ์๋ค. - ์ ๋ง๋๊ธฐ๋ฅผ ๋ค๋ฅธ ์ ๋ง๋๊ธฐ ์์ ๋๋ ๊ฒฝ์ฐ ์์ ํ ํฌํจ๋๋๋ก ๋๋,
๋์ ์ ๊ฒน์น์ง ์๋๋ก ๋๋๋ค.
• ๊ฐ ์ ๋ง๋๊ธฐ๋ฅผ ์๋ฅด๋ ๋ ์ด์ ๋ ์ ์ด๋ ํ๋ ์กด์ฌํ๋ค.
• ๋ ์ด์ ๋ ์ด๋ค ์ ๋ง๋๊ธฐ์ ์ ๋์ ๊ณผ๋ ๊ฒน์น์ง ์๋๋ค.
์๋ ๊ทธ๋ฆผ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์๋ฅผ ๋ณด์ฌ์ค๋ค. ์ํ์ผ๋ก ๊ทธ๋ ค์ง ๊ตต์ ์ค์ ์ ์ ๋ง๋๊ธฐ์ด๊ณ , ์ ์ ๋ ์ด์ ์ ์์น,
์์ง์ผ๋ก ๊ทธ๋ ค์ง ์ ์ ํ์ดํ๋ ๋ ์ด์ ์ ๋ฐ์ฌ ๋ฐฉํฅ์ด๋ค.
์ด๋ฌํ ๋ ์ด์ ์ ์ ๋ง๋๊ธฐ์ ๋ฐฐ์น๋ ๋ค์๊ณผ ๊ฐ์ด ๊ดํธ๋ฅผ ์ด์ฉํ์ฌ ์ผ์ชฝ๋ถํฐ ์์๋๋ก ํํํ ์ ์๋ค.
1. ๋ ์ด์ ๋ ์ฌ๋ ๊ดํธ์ ๋ซ๋ ๊ดํธ์ ์ธ์ ํ ์ ‘( ) ’ ์ผ๋ก ํํ๋๋ค. ๋ํ, ๋ชจ๋ ‘( ) ’๋ ๋ฐ ๋์ ๋ ์ด์ ๋ฅผ ํํํ๋ค.
2. ์ ๋ง๋๊ธฐ์ ์ผ์ชฝ ๋์ ์ฌ๋ ๊ดํธ ‘ ( ’ ๋ก, ์ค๋ฅธ์ชฝ ๋์ ๋ซํ ๊ดํธ ‘) ’ ๋ก ํํ๋๋ค.
์ ์์ ๊ดํธ ํํ์ ๊ทธ๋ฆผ ์์ ์ฃผ์ด์ ธ ์๋ค.
์ ๋ง๋๊ธฐ๋ ๋ ์ด์ ์ ์ํด ๋ช ๊ฐ์ ์กฐ๊ฐ์ผ๋ก ์๋ ค์ง๋๋ฐ, ์ ์์์ ๊ฐ์ฅ ์์ ์๋ ๋ ๊ฐ์ ์ ๋ง๋๊ธฐ๋ ๊ฐ๊ฐ 3๊ฐ์ 2๊ฐ์ ์กฐ๊ฐ์ผ๋ก ์๋ ค์ง๊ณ ,
์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฃผ์ด์ง ์ ๋ง๋๊ธฐ๋ค์ ์ด 17๊ฐ์ ์กฐ๊ฐ์ผ๋ก ์๋ ค์ง๋ค.
์ ๋ง๋๊ธฐ์ ๋ ์ด์ ์ ๋ฐฐ์น๋ฅผ ๋ํ๋ด๋ ๊ดํธ ํํ์ด ์ฃผ์ด์ก์ ๋, ์๋ ค์ง ์ ๋ง๋๊ธฐ ์กฐ๊ฐ์ ์ด ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
ํ ์ค์ ์ ๋ง๋๊ธฐ์ ๋ ์ด์ ์ ๋ฐฐ์น๋ฅผ ๋ํ๋ด๋ ๊ดํธ ํํ์ด ๊ณต๋ฐฑ์์ด ์ฃผ์ด์ง๋ค. ๊ดํธ ๋ฌธ์์ ๊ฐ์๋ ์ต๋ 100,000์ด๋ค.
์ถ๋ ฅ
import java.util.*;
public class Main {
public int solution(String s){
int answer=0;
Stack<Character> stack=new Stack<>();
for(int i=0; i<s.length(); i++){ // for each ๋ฌธ์ผ๋ก ์์ฑํ๋ฉด index์ ๊ทผ์ด ์กฐ๊ธ ๊ณค๋
if(s.charAt(i)=='(') stack.push(s.charAt(i));
else{ // ๋ซ๋๊ดํธ๋ฉด
stack.pop();
if(s.charAt(i-1)=='(') answer+=stack.size(); // ์ด์ index=( ๋ฉด ๋ ์ด์
else answer++; // ๋์ง์ ๋ซ๋๊ดํธ๋ผ๋ฉด +1
}
}
return answer;
}
public static void main(String[] args) {
Main T=new Main();
Scanner kb=new Scanner(System.in);
String s=kb.next();
System.out.println(T.solution(s));
}
}
6. ๊ณต์ฃผ๊ตฌํ๊ธฐ
์ค๋ช
์ ๋ณด ์๊ตญ์ ์ด์ ๋๋ผ ์ธ๋๋ธ ๊ณต์ฃผ๊ฐ ์ฒ์์ ๊ดด๋ฌผ์๊ฒ ์กํ๊ฐ์ต๋๋ค.
์ ๋ณด ์๊ตญ์๋ ์์๊ฐ N๋ช ์ด ์๋๋ฐ ์๋ก ๊ณต์ฃผ๋ฅผ ๊ตฌํ๋ฌ ๊ฐ๊ฒ ๋ค๊ณ ํฉ๋๋ค.
์ ๋ณด์๊ตญ์ ์์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ณต์ฃผ๋ฅผ ๊ตฌํ๋ฌ ๊ฐ ์์๋ฅผ ๊ฒฐ์ ํ๊ธฐ๋ก ํ์ต๋๋ค.
์์ ์์๋ค์ ๋์ด ์์ผ๋ก 1๋ฒ๋ถํฐ N๋ฒ๊น์ง ์ฐจ๋ก๋ก ๋ฒํธ๋ฅผ ๋งค๊ธด๋ค.
๊ทธ๋ฆฌ๊ณ 1๋ฒ ์์๋ถํฐ N๋ฒ ์์๊น์ง ์์๋๋ก ์๊ณ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๋ฉฐ ๋๊ทธ๋๊ฒ ์๊ฒ ํ๋ค.
๊ทธ๋ฆฌ๊ณ 1๋ฒ ์์๋ถํฐ ์๊ณ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๋ฉฐ 1๋ถํฐ ์์ํ์ฌ ๋ฒํธ๋ฅผ ์ธ์น๊ฒ ํ๋ค.
ํ ์์๊ฐ K(ํน์ ์ซ์)๋ฅผ ์ธ์น๋ฉด ๊ทธ ์์๋ ๊ณต์ฃผ๋ฅผ ๊ตฌํ๋ฌ ๊ฐ๋๋ฐ์ ์ ์ธ๋๊ณ ์ ๋ฐ์ผ๋ก ๋์ค๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ์์๋ถํฐ ๋ค์ 1๋ถํฐ ์์ํ์ฌ ๋ฒํธ๋ฅผ ์ธ์น๋ค.
์ด๋ ๊ฒ ํด์ ๋ง์ง๋ง๊น์ง ๋จ์ ์์๊ฐ ๊ณต์ฃผ๋ฅผ ๊ตฌํ๋ฌ ๊ฐ ์ ์๋ค.
์๋ฅผ ๋ค์ด ์ด 8๋ช ์ ์์๊ฐ ์๊ณ , 3์ ์ธ์น ์์๊ฐ ์ ์ธ๋๋ค๊ณ ํ์. ์ฒ์์๋ 3๋ฒ ์์๊ฐ 3์ ์ธ์ณ ์ ์ธ๋๋ค.
์ด์ด 6, 1, 5, 2, 8, 4๋ฒ ์์๊ฐ ์ฐจ๋ก๋๋ก ์ ์ธ๋๊ณ ๋ง์ง๋ง๊น์ง ๋จ๊ฒ ๋ 7๋ฒ ์์์๊ฒ ๊ณต์ฃผ๋ฅผ ๊ตฌํ๋ฌ๊ฐ๋๋ค.
N๊ณผ K๊ฐ ์ฃผ์ด์ง ๋ ๊ณต์ฃผ๋ฅผ ๊ตฌํ๋ฌ ๊ฐ ์์์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ ์ค์ ์์ฐ์ N(5<=N<=1,000)๊ณผ K(2<=K<=9)๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
import java.util.*;
public class Main {
public int solution(int n, int k){
int answer=0;
Queue<Integer> Q = new LinkedList<>();
for(int i=1; i<=n; i++){
Q.offer(i);
}
while(!Q.isEmpty()){
for(int i=1; i<k; i++)
Q.offer(Q.poll()); // ๊บผ๋ธ ์ ์ผ ์์ ๊ฐ์ ๋งจ๋ค๋ก
Q.poll(); // ์ ๊ฑฐ
if(Q.size()==1)
answer=Q.poll();
}
return answer;
}
public static void main(String[] args) {
Main T=new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int k=kb.nextInt();
System.out.println(T.solution(n,k));
}
}
7. ๊ต์ก๊ณผ์ ์ค๊ณ
import java.util.*;
class Main {
public String solution(String s, String str) {
String answer="YES";
Queue<Character> Q=new LinkedList<>();
// ์
๋ ฅ๋ฐ์ ํ์๋ชฉ s๋ฅผ Q์ ์์๋๋ก ์ถ๊ฐ
for(char x : s.toCharArray()){
Q.offer(x);
}
// ๊ณํํ ๊ณผ๋ชฉ์ ์์๋๋ก ํ๋ณ
for(char x : str.toCharArray()){
if(Q.contains(x)){ // Q ์์ ํด๋น ๊ณผ๋ชฉ์ด ์๋๋ฐ (= ํ์๊ณผ๋ชฉ์ด๋ค)
if(x!=Q.poll()) return "NO"; // ๊ทผ๋ฐ ์ฒซ์์๊ฐ ์๋๋ผ๋ฉด "NO"๋ฆฌํด
}
}
if(!Q.isEmpty()) return "NO"; // ๋น์ด์์ง์์ผ๋ฉด(ํ์๊ณผ๋ชฉ ๋ฃ์ง์์) "NO"๋ฆฌํด
return answer;
}
public static void main(String[] args) {
Main T=new Main();
Scanner kb = new Scanner(System.in);
String s=kb.next();
String str=kb.next();
System.out.println(T.solution(s,str));
}
}
8. ์๊ธ์ค
import java.util.*;
import java.util.LinkedList;
import java.io.IOException;
class Person{
int id;
int priority;
public Person(int id, int priority){
this.id=id;
this.priority=priority;
}
}
class Solution {
public int solution(int n, int m, int[] arr) {
int answer=0;
int cnt=0;
Queue<Person> Q=new LinkedList<>(); // Personํ Q
for(int i=0; i<n; i++){
Q.add(new Person(i,arr[i])); // (0,60) (1,50) (2,70) ...
}
while(!Q.isEmpty()){
Person tmp=Q.poll(); // tmp = 0๋ฒ์งธ ๊ฐ
for(Person x:Q){
if(x.priority>tmp.priority){ // ํ์ฌ tmp ๊ฐ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ ๊ฐ์ด ์๋ค๋ฉด
Q.offer(tmp); // ๋งจ๋ค์ offer
tmp=null;
break;
}
}
if(tmp!=null){ // ์ฐ์ ์์ ๋์๊ฒ ์์ด์ ์ง๋ฃ ๋ฐ์ ์ ์๋ ๊ฒฝ์ฐ
answer++; // 1์ฆ๊ฐ
if(tmp.id==m) return answer;
}
}
return answer;
}
public static void main(String[] args) throws IOException{
Solution T=new Solution();
Scanner kb = new Scanner(System.in);;
int n=kb.nextInt();
int m=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
System.out.print(T.solution(n,m,arr));
}
}
import java.util.*;
import java.util.LinkedList;
import java.io.IOException;
class Person{
int id;
int priority;
public Person(int id, int priority){
this.id=id;
this.priority=priority;
}
}
class Solution {
public int solution(int n, int m, int[] arr) {
int answer=0;
int cnt=0;
Queue<Person> Q=new LinkedList<>(); // Personํ Q
for(int i=0; i<n; i++){
Q.add(new Person(i,arr[i])); // (0,60) (1,50) (2,70) ...
}
while(!Q.isEmpty()){
Person tmp=Q.poll(); // tmp = 0๋ฒ์งธ ๊ฐ
for(Person x:Q){
if(x.priority>tmp.priority){ // ํ์ฌ tmp ๊ฐ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ ๊ฐ์ด ์๋ค๋ฉด
Q.offer(tmp); // ๋งจ๋ค์ offer
tmp=null;
break;
}
}
if(tmp!=null){ // ์ฐ์ ์์ ๋์๊ฒ ์์ด์ ์ง๋ฃ ๋ฐ์ ์ ์๋ ๊ฒฝ์ฐ
answer++; // 1์ฆ๊ฐ
if(tmp.id==m) return answer;
}
}
return answer;
}
public static void main(String[] args) throws IOException{
Solution T=new Solution();
Scanner kb = new Scanner(System.in);;
int n=kb.nextInt();
int m=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
System.out.print(T.solution(n,m,arr));
}
}
'๐ ์ฝ๋ฉํ ์คํธ > Inflearn' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์น์ 7. Recursive, Tree, Graph(DFS, BFS ๊ธฐ์ด) (0) | 2022.12.07 |
---|---|
์น์ 6. Sorting and Searching(์ ๋ ฌ, ์ด๋ถ๊ฒ์๊ณผ ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ) (0) | 2022.12.07 |
์น์ 4. HashMap, TreeSet ( ํด์ฌ, ์ ๋ ฌ์ง์ Set ) (0) | 2022.09.28 |
์น์ 3. Two points, Sliding window[ํจ์จ์ฑ : O(n^2)-->O(n)] (0) | 2022.09.16 |
์น์ 1. String(๋ฌธ์์ด) (0) | 2022.08.29 |