java 7

자료구조 : Comparator vs Comparable

Comparable인터페이스. 가지고 있는 메서드는 CompareTo()import 필요없다. java.lang에 위치해있기 때문.이러한 비교하는 인터페이스를 가져오는건 궁극적으로 비교도 있지만 정렬의 기준을 세우는 것이다.return 값은 0,1,-1이얌.class Student implements Comparable{..... 생성자, getter setter.... public int CompareTo(Student s){ return this.id-s.id; } //아니 그럼 이름과 같은 문자일땐 어떻게 비교하나요? //이런식으로 comapreTo내부에 compareTo를 써서 정렬의 기준을 잡아주면 됩니다. public int CompareTo(Student s){ return this...

About BinaryHeap

차근차근 여러가지 자료 구조들을  하나씩 소개해볼까 한다. 우선순위 큐?우선순위 큐(priority queue)는 자료 구조의 한 종류로서, 큐(queue)와 트리(tree) 두 개념 모두와 관련이 있다. 구체적으로 설명하자면: 큐와의 관계큐(queue)는 FIFO(First In, First Out) 방식으로 작동하는 자료 구조다. 즉, 먼저 들어온 요소가 먼저 나가는 구조인데 .우선순위 큐는 큐의 특수한 형태로, 각 요소가 우선순위를 가지며, 요소가 들어온 순서가 아니라 우선순위에 따라 나가는 방식이다. ( 들어온 순서가 아닌 우선순위를 매기는 방식) 우선순위가 높은 요소가 먼저 나갑니다.따라서, 우선순위 큐는 큐의 개념을 확장한 것으로 볼 수 있다.트리와의 관계우선순위 큐는 내부적으로 다양한 자료 ..

1918. <후위 표기식>

1918번: 후위 표기식 (acmicpc.net) 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 1. 여러분의 마음을 읽어보자. A+B*C-D/E ABC*+DE/-​ 여기는 문자 뭉탱이 연산자 뭉탱이 문자 뭉탱이 연산자 뭉탱이 순으로 뭉탱이들이 다채로운 case. 아마 까다로워할 포인트는 A*(B+C) ABC+* 처럼 문자 한 뭉탱이가 나오고 연산자 뭉탱이가 나오는 case. 이 두 case가 달라서 구현을 어떻게 접근해야할지 조차 모르는 분들이 많을 것이다. 2. 문자는 그대로? 일단 문자의 순서는 변..

Algorithm_PS 2024.01.29

1935. <후위표기식2>

1935번: 후위 표기식2 (acmicpc.net) 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net 후위표기식 관련 문제이다. 후위표기식은 한마디로 연산자가 뒤로 가는거다. ab+ 는 a+b abc*+de/- > (b*c)+a - (d/e) 뭐 이런느낌이다. 계산순서를 보면 알 수 있듯, 일단 스택을 활용하는게 상당히 적절해보인다. 일단 만약 알파벳이 5개의 종류대로 숫자가 순서대로 input된다는 점은 상당히 편하다. 5 ABC*+DE/- 1 2 3 4 5 이 예제를 들어 생각해보자. 1. 소수 ..

Algorithm_PS 2024.01.29

17299. <오등큰수>

17299번: 오등큰수 (acmicpc.net) 17299번: 오등큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 오등큰수는 오른쪽에 있으면서 수열 A에서 등장한 횟수가 F(Ai)보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미. 1. 카운팅 배열 일단 빈도수체크를 해야하는 점. 여기서 카운팅 배열을 하나 만들어 아이디어를 떠오르는 게 좋겠다. (수의 max range가 100만이니 100만+1짜를 만든다.) 그래서 input을 받고나면 정수 값마다의 인덱스에 자신들의 빈도수가 체크가 되겠다. 2. 스택 스택을 쓰는 근거는 최신 업데이트를 필..

Algorithm_PS 2024.01.29

백준_2745 <진법 변환>

2745번: 진법 변환 (acmicpc.net) 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제가 특이하다. n진법을 다루는 문제인데 처음에 약간 이해하기 빡셀수 있으나 몇번 예시를 들어보면 쉽다. input의 예시는 ZZZZZ 36. 10진법을 넘어가는 숫자는 대문자 알파벳으로 표시한다라고 했다. A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35 35 35 35 35 35을 36진법으로 표현하는 프로그램을 짜는것. 복잡해보이지만 어려울것 없다. z 각각 한개는 자릿수를 구성하..

Algorithm_PS 2023.10.26

백준_10811 (바구니 뒤집기)

10811번: 바구니 뒤집기 (acmicpc.net) 10811번: 바구니 뒤집기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2 www.acmicpc.net 문제는 간단하다. 바구니의 숫자는 기본적으로 1,2,3,4 순서대로 설정되어있다는 것. - 첫번째 포인트 두 숫자를 입력받으면 그 숫자의 범위대로 바구니의 순서를 reverse한다. - 두번째 포인트 이 두가지를 집중해서 코드를 짜면 되겠다고 생각했다. 첫번째 포인트는 for문으로 그냥 1번 인덱스에는 1, 2번엔 2 .. 이런식으로 설정하면 끝 두번째 포인트가 관건이다. array에서 순서를 바꾸는것은..

Algorithm_PS 2023.10.16