유형트라이(트리) 특징입력되는 문자열이 집합 S에 포함되어 있는 문자열 중 적어도 하나의 접두사인가? 라는 질문에 해답을 구하는 것이 바로 Trie 구조의 특징이라고 할 수 있다.집합 S에 포함된 문자열이 {”BAND”, “BANANA”} 인 상황을 예로 들면 아래 다이어그램과 같다. 아래는 위 다이어그램의 Mermaid 코드이다.graph LR B --> A --> N --> A2[A] N-->D A2 --> N2[N] N2 --> A3[A] 이제 접두사인지 궁금한 입력된 문자열들에 대해 다이어그램 기반으로 접두사인지 파악하는 예시이다. 입력된 문자열이 B, BA, BAN 인 경우 : 2개 문자열 모두의 접두사이다.입력된 문자열이 BANDED 인 경우 : Trie 자료구조 상 D는 Child로..
태그리스트역순 삭제(Reverse Deletion)풀이Java의 ArrayList와 같은 자료구조는 요소를 제거하면 나머지 요소들이 왼쪽으로 당겨지며 인덱스가 재조정 된다.예를 들어, 0번 인덱스를 제거하면 기존 1번 인덱스가 0번으로 이동하므로, 반복문 다음 실행 시 기존 1번 인덱스에 있던 요소를 탐색하지 않게 된다.따라서 리스트를 순회하며 인덱스 조건에 따라 삭제하고자 한다면 역순으로 삭제해야한다.이 문제 또한, 홀수번(인덱스 기반 조건)째 요소를 반복하여 삭제하므로 인덱스가 꼬이는 것을 방지하기 위해 뒤에서 부터 지워야 한다. → 역순 삭제static void solve() throws Exception { int n =scan.nextInt(); List num = new ArrayList();..
태그비트(2진법)XOR풀이문제 조건 중 "난 너희 둘 중 한 명만 맞힌 표적은 다 맞혔는데, 너희 둘 다 못 맞히거나 둘 다 맞힌 것은 전부 안 맞혔어." 라는 조건에서 XOR연산과 같은 의미임을 포함하고 있어 비트연산으로 이 문제를 풀 수 있음을 의심할 수 있고,과녁별로 각각 1점 / 2점 / 4점 / 8점 / 16점 / 32점 / 64점 / 128점 / 256점 / 512점 를 부여한다는 점에서 비트연산으로 이 문제를 풀 수 있음을 확신할 수 있다.static void solve() throws Exception { System.out.println(scan.nextInt() ^ scan.nextInt());}
태그탑밀기풀이대표적인 탑밀기 유형의 문제이며, 최대,최솟값 갱신 개념에 개수세기 만 추가된 형태이다.static void solve() throws Exception { int n = scan.nextInt(); int[] arr= scan.nextIntArray(n); int left = 0; int maxH = 0; int right = 0; for (int i = 0; i = 0; i--) { if(maxH
태그과반수(모듈로, ceil)과반수 개념을 코드에 적용하고자 하면 아래의 2가지의 방법이 있다.n >= (N-1) / 2 + 1 // 모듈로n >= (int)Math.ceil(N) // ceil함수static void solve() throws Exception { int prob = scan.nextInt(); int professor = scan.nextInt(); int exam = 0; for (int i = 0; i = (professor-1)/2 + 1){ exam++; } } System.out.println(exam);}