Algorithm 215

백준 / 1247번 / 부호 (+ BigInteger 사용법)

[문제] N개의 정수가 주어지면, 이 정수들의 합 S의 부호를 구하는 프로그램을 작성하시오. [입력] 총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1 ≤ N ≤ 100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거나 같다. [출력] 총 3개의 줄에 걸쳐 각 테스트 셋에 대해 N개의 정수들의 합 S의 부호를 출력한다. S=0이면 "0"을, S>0이면 "+"를, S BigIntger int int_bigNum = bigNumber.intValue(); //BigIntger -> int long long_bigNum = bigNumber.longValue(); //BigIntger -> lon..

Algorithm/Baekjoon 2022.08.05

[알고리즘] 자바 Deque(덱) 사용법

덱, 데크 (Deque) 스택의 장점과 큐의 장점을 둘 다 사용할 수 있다. 데이터의 추출/삭제를 앞, 뒤를 모두 할 수 있다! * deque는 인덱스로 접근이 불가하다. 덱 선언 Deque dq = new ArrayDeque(); 자바에서 덱은 ArrayDeque를 사용해 생성한다. Deque dq = new ArrayDeque(); // 덱 배열 Deque dq = new ArrayDeque(); 덱에 값 추가 Deque deque = new ArrayDeque(); deque.offer(1); // 큐와 같음 deque.offerFirst(1); // 앞으로 삽입 deque.offerLast(1); // 뒤로 삽입 덱에 값을 추가하려면, 큐와 같이 offer메소드를 사용..

Algorithm 2022.08.01

[알고리즘] 자바 Queue(큐) 사용법

큐 데이터를 일시적으로 쌓아 놓는 자료구조로, 먼저 넣은 데이터를 가장 먼저 꺼내는 선입선출(FIFO) 구조이다. 인큐 (en-queue) : 큐에 데이터 넣는 작업 → 복잡도 O(1) 디큐 (de-queue) : 큐에서 데이터를 꺼내는 작업 → 복잡도 O(n) front (맨 앞) : 데이터 나오는 쪽 rear (맨 뒤) : 데이터 넣는 쪽 큐는 한 쪽 끝은 front로 정해 삭제 연산만 수행하고, 다른 한 쪽 끝은 rear로 정해 삽입 연산만 수행한다! 큐 선언 import java.util.LinkedList; import java.util.Queue; Queue queue = new LinkedList(); Queue queue = new LinkedList(); 자바에서 큐는 LinkedList..

Algorithm 2022.07.31

[알고리즘] 선형 탐색 (배열 검색 알고리즘)

선형 탐색 (Linear Search) 원하는 키 값을 갖는 요소를 만날 때 까지 맨 앞부터 순서대로 요소를 검색하는 알고리즘 '선형 탐색' 또는 '순차 탐색' 이라고 한다. 선형 검색에서 배열 검색의 종료하는 조건은 2개! 아래의 조건 중 하나라도 성립을 하면, 검색을 종료한다. 조건 1. 종료 검색할 값을 발견하지 못하고 배열 끝을 지나간 경우 => 검색 실패 조건 2. 종료 검색할 값과 같은 요소 발견한 경우 => 검색 성공 배열의 요소수가 n개일 때, 종료 조건 1&2를 판단하는 횟수는 평균 n/2회이다. * 원하는 값이 배열에 존재하지 않는 경우? 1번은 n+1회, 2번은 n회 판단! 선형 탐색 사용 예시 import java.util.Scanner; public class 선형탐색 { publ..

Algorithm 2022.07.30

백준 / 2420번 / 사파리월드

[문제] 사파리월드는 인터넷으로만 존재하는 미스테리한 나라이다. 사파리월드에는 2개의 서브도메인이 seunghwan.royal.gov.sw와 kyuhyun.royal.gov.sw 이 있는데, 이것이 couple.royal.gov.sw으로 합쳐질 것이다. 그러나 도메인 관리 센터 SWNIC(센터장: 김동규)에는 엄격한 룰이 있다. 두 서브도메인을 합칠 때, 유명도의 차이가 너무 차이나지 않을 경우에만 두 서브도메인을 결혼시키는 것이다. 서브도메인의 유명도는 정수이다. 두 서브도메인의 유명도가 주어졌을 때, 그 차이를 구하는 프로그램을 작성하시오. [입력] 첫째 줄에 두 도메인의 유명도 N과 M이 주어진다. (-2,000,000,000 ≤ N, M ≤ 2,000,000,000) [출력] 첫째 줄에 두 유명도..

Algorithm/Baekjoon 2022.07.21

백준 / 1453번 / 피시방 알바

[문제] 세준이는 피시방에서 아르바이트를 한다. 세준이의 피시방에는 1번부터 100번까지 컴퓨터가 있다. 들어오는 손님은 모두 자기가 앉고 싶은 자리에만 앉고싶어한다. 따라서 들어오면서 번호를 말한다. 만약에 그 자리에 사람이 없으면 그 손님은 그 자리에 앉아서 컴퓨터를 할 수 있고, 사람이 있다면 거절당한다. 거절당하는 사람의 수를 출력하는 프로그램을 작성하시오. 자리는 맨 처음에 모두 비어있고, 어떤 사람이 자리에 앉으면 자리를 비우는 일은 없다. [입력] 첫째 줄에 손님의 수 N이 주어진다. N은 100보다 작거나 같다. 둘째 줄에 손님이 들어오는 순서대로 각 손님이 앉고 싶어하는 자리가 입력으로 주어진다. [출력] 첫째 줄에 거절당하는 사람의 수를 출력한다. [예제 입력] 3 1 2 3 [예제 출..

Algorithm/Baekjoon 2022.07.16

백준 / 11650번 / 좌표 정렬하기

[문제] 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. [입력] 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. [출력] 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. [예제 입력] 5 3 4 1 1 1 -1 2 2 3 3 [예제 출력] 1 -1 1 1 2 2 3 3 3 4 import java.util.Arrays; import java.util.Comparator; import java.ut..

Algorithm/Baekjoon 2022.07.16

자바 compareTo 메소드 (문자열, 숫자 값 비교)

compareTo 함수는 두 개의 값을 비교해 int값으로 반환해주는 함수이다. 숫자 비교 같은 경우는 크다(1) 같다(0) 작다(-1)의 관한 결과값을 리턴하고, 문자열 비교는 같아(0) 그 외 양수/음수값이 숫자와는 다른 결과값을 리턴한다. 숫자 비교 public class CompareToTest{ public static void main(String[] args){ Integer x = 3; Integer y = 4; Double z = 1.0; System.out.println( x.compareTo(y) ); // -1 System.out.println( x.compareTo(3) ); // 0 System.out.println( x.compareTo(2) ); // 1 System.out...

Algorithm 2022.07.14

백준 / 1181번 / 단어 정렬

[문제] 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 [입력] 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. [출력] 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. [예제 입력] 13 but i wont hesitate no more no more it cannot wait im yours [예제 출력] i im it no but more wait wont yours cannot he..

Algorithm/Baekjoon 2022.07.14

특정 규칙에 의한 배열 정렬 Arrays.sort Comparator

Arrays.sort() 메소드 안에서 두 객체를 비교해 위치를 바꿀지 말지 판단해 정렬한다. Comparator는 객체를 비교할 수 있도록 해주는 인터페이스로, 특정 규칙에 의해 비교하고 싶은 경우에 구현해 사용한다. String[] arr = new String[N];// 배열에 단어가 이미 초기화 되었다고 가정 Arrays.sort(arr, new Comparator() { @Override public int compare(String s1, String s2) { /* 정렬방법 구현 */ } }); 이렇게 Comparator의 타입을 String으로 넣었다. 그 후, compare 메소드를 오버라이딩 한다! compare메소드 리턴 타입이 int형인 이유는 compare메소드는 3가지 리턴 값에..

Algorithm 2022.07.14