1. ํฉ์ด ๊ฐ์ ๋ถ๋ถ์งํฉ 2. ๋ฐ๋์ด ์น์ฐจ 3. ์ต๋์ ์ ๊ตฌํ๊ธฐ 4. ์ค๋ณต์์ด(์ฑ์ ์ง์์๋จ) 5. ๋์ ๊ตํ 6. ์์ด ๊ตฌํ๊ธฐ(์ฑ์ ์ง์์๋จ) 7. ์กฐํฉ์(๋ฉ๋ชจ์ด์ ์ด์ ) 8. ์์ด ์ถ์ธกํ๊ธฐ 9. ์กฐํฉ ๊ตฌํ๊ธฐ(์ฑ์ ์ง์์๋จ) 10. ๋ฏธ๋กํ์(DFS) 11. ๋ฏธ๋ก์ ์ต๋จ๊ฑฐ๋ฆฌ ํต๋ก(BFS) 12. ํ ๋งํ (BFS) 13. ์ฌ๋๋ผ ์์ผ๋๋(DFS) 14. ์ฌ๋๋ผ ์์ผ๋๋(BFS) 15. ํผ์๋ฐฐ๋ฌ๊ฑฐ๋ฆฌ(DFS) 1. ํฉ์ด ๊ฐ์ ๋ถ๋ถ์งํฉ 2. ๋ฐ๋์ด ์น์ฐจ 3. ์ต๋์ ์ ๊ตฌํ๊ธฐ 4. ์ค๋ณต ์์ด ๊ตฌํ๊ธฐ 5. ๋์ ๊ตํ 6. ์์ด ๊ตฌํ๊ธฐ 7. ์กฐํฉ์ ( ๋ฉ๋ชจ์ด์ ์ด์ ) 8. ์์ด ์ถ์ธกํ๊ธฐ ( ๋ฉ๋ชจ์ด์ ์ด์ + DFS ) 9. ์กฐํฉ ๊ตฌํ๊ธฐ
๐ก Recursive, Tree, Graph(DFS, BFS ๊ธฐ์ด) 1. ์ฌ๊ทํจ์(์คํํ๋ ์) 2. ์ด์ง์ ์ถ๋ ฅ(์ฌ๊ท) 3. ํฉํ ๋ฆฌ์ผ 4. ํผ๋ณด๋์น ์ฌ๊ท(๋ฉ๋ชจ์ด์ ์ด์ ) 5. ์ด์งํธ๋ฆฌ์ํ(DFS : Depth-First Search) 6. ๋ถ๋ถ์งํฉ ๊ตฌํ๊ธฐ(DFS) 7. ์ด์งํธ๋ฆฌ ๋ ๋ฒจํ์(BFS : Breadth-First Search) 8. ์ก์์ง ์ฐพ๊ธฐ1(BFS) 9. Tree ๋ง๋จ๋ ธ๋๊น์ง์ ๊น์ฅ ์งง์ ๊ฒฝ๋ก(DFS) 10. Tree ๋ง๋จ๋ ธ๋๊น์ง์ ๊น์ฅ ์งง์ ๊ฒฝ๋ก(BFS) 11. ๊ทธ๋ํ์ ์ธ์ ํ๋ ฌ 12. ๊ฒฝ๋กํ์(DFS) 13. ๊ฒฝ๋กํ์(์ธ์ ๋ฆฌ์คํธ, ArrayList) 14. ๊ทธ๋ํ ์ต๋จ๊ฑฐ๋ฆฌ(BFS)
๐ ์ ๋ ฌ / ์ด๋ถ๊ฒ์ & ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ ์ ํ ์ ๋ ฌ import java.util.*; class Solution { public int[] solution(int n, int[] arr) { for(int i=0; i
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 stack=new Stack(); for(char x:str.toCharArray()){ // ๋ซ๋ ๊ดํธ๊ฐ ๋ง์๋ if(x=='(') stack.push(x); else{ // ๋ซ๋ ๊ดํธ ์ผ๋ if(stack.isEmpty()) return "NO";// stack์ด ๋น์ด์๋ => "NO" stack.pop(); // ๊ทธ๋ ์ง ์๋ค๋ฉด ์ ์ผ ์๋จ์ ์..
ํ๊ธ ํ์ฅ ์๋๊ทธ๋จ(HashMap) ๋งค์ถ์ก์ ์ข ๋ฅ(Hash, sliding window) ๋ชจ๋ ์๋๊ทธ๋จ ์ฐพ๊ธฐ ( Hash, sliding window : ์๊ฐ๋ณต์ก๋ O(n)) K๋ฒ์งธ ํฐ ์ 1. ํ๊ธํ์ฅ import java.util.*; public class Main { public char solution(int n,String str){ char answer=' '; HashMap map=new HashMap(); for(char x:str.toCharArray()){ map.put(x,map.getOrDefault(x,0)+1); } int max=Integer.MIN_VALUE; for(char key:map.keySet()){ if(map.get(key)>max){ max=map.get(ke..
1. ๋ ๋ฐฐ์ด ํฉ์น๊ธฐ ( two pointers algorithm ) 2. ๊ณตํต์์๊ตฌํ๊ธฐ( two points algorithm ) 3. ์ต๋ ๋งค์ถ( Sliding window ) 4. ์ฐ์๋ถ๋ถ์์ด ( ๋ณตํฉ์ ๋ฌธ์ ) 5.1 ์ฐ์๋ ์์ฐ์์ ํฉ ( two pointers ) 5.2 ์ฐ์๋ ์์ฐ์์ ํฉ ( ์ํ ) 6. ์ต๋ ๊ธธ์ด ์ฐ์๋ถ๋ถ์์ด ( ๋ณตํฉ์ ๋ฌธ์ ) 1. ๋ ๋ฐฐ์ด ํฉ์น๊ธฐ ( two pointers algorithm ) import java.util.*; public class Main { public ArrayList solution(int n, int m, int[] a, int[] b){ ArrayList answer=new ArrayList(); int p1=0, p2=0; while(p1
1. ๋ฌธ์์ฐพ๊ธฐ import java.util.Scanner; public class Main { public int solution(String str, char t){ int answer=0; str=str.toUpperCase(); t=Character.toUpperCase(t); for(int i=0; im){ // ์ต๋๊ฐ ์๊ณ ๋ฆฌ์ฆ m=len; answer=x; } } 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); } } 4. ๋จ์ด ..
2.1 ํฐ ์ ์ถ๋ ฅํ๊ธฐ solution import java.util.*; class Main { public ArrayList solution(int n, int[] arr){ ArrayList answer = new ArrayList(); answer.add(arr[0]); for(int i=1; iarr[i-1]) answer.add(arr[i]); } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int[] arr = new int[n]; for(int i=0; i