반응형

알고리즘

    [백준] 9093. 단어 뒤집기(Java8)

    [백준] 9093. 단어 뒤집기(Java8)

    문제 풀이1 - 정답 (배열 사용) import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); StringTokenizer st; int t = Integer.parseInt(br.readLine()); // 테스트케이스 개수 int cnt; // 토큰 개수 ArrayList arr; for(int i = 0; i < t; i++) { st = new Stri..

    [백준] 1158. 요세푸스 문제(Java8)

    [백준] 1158. 요세푸스 문제(Java8)

    문제 예제1 해당 문제는 자료구조의 '큐'를 이용해서 풀 수 있습니다. 예제 1번은 아래와 같이 이해할 수 있습니다. 1. n의 길이만큼 큐를 생성한다. 2. 큐를 k번 돌아서 0번째 index 값을 제거한다. 풀이 Queue 선언 Queue queue = new LinkedList(); Queue - 값 추가 queue.add(value); Queue - 첫번째 값 반환 후 제거 queue.poll(); import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStream..

    [백준] 10845. 큐(Java8)

    [백준] 10845. 큐(Java8)

    문제 예제1 예제 1번은 아래와 같이 이해할 수 있습니다. 풀이1 - 정답 (배열 사용) import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception{ //push X: 정수 X를 큐에 넣는 연산이다. //pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. //size: 큐에 들어있는 정수의 개수를 출력한다. //empty: 큐가 비어있으면 1, 아니면 0을 출력한다. //front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. //bac..

    [백준] 10828. 스택(Java8)

    [백준] 10828. 스택(Java8)

    문제 예제1 예제 1번은 아래와 같이 이해할 수 있습니다. 풀이1 - 런타임 에러 (ArrayIndexOutOfBounds) 런타임 에러 (ArrayIndexOutOfBounds) - 배열에서 java.lang.ArrayIndexOutOfBoundsException은 배열의 크기를 벗어난 값에 접근하려고 할 때 발생합니다. 아래와 같이 코드를 작성하였을 때, 런타임 에러가 발생했습니다. 에 대한 처리가 없어서 발생했습니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exc..

    알고리즘 - 최대공약수 계산(유클리드 호제법) java 예제

    알고리즘 - 최대공약수 계산(유클리드 호제법) java 예제

    유클리드 호제법 두 개의 자연수에 대한 최대공약수를 구하는 대표적인 알고리즘이다. 두 자연수 A, B에 대하여 A를 B로 나눈 나머지를 R이라고 할 때, A와 B의 최대공약수는 B와 R의 최대공약수와 같다. EX) 192와 162의 최대 공약수 구하기 1. A = 192, B = 162이다. 2. A를 B로 나눈 나머지 R = 30이다. 3. 162를 30으로 나눈 나머지는 4. 이 과정을 반복하여 한 쪽이 나누어 떨어질 때까지 반복한다. 5. 최대공약수는 나누어 떨어지기 직전의 나머지인 6이다. JAVA로 유클리드 호제법을 활용한 최대공약수 구하기 - 최대공약수를 구하기 위한 gcd함수를 구현하여 나누어 떨어질 때까지 재귀적으로 구현한다. import java.io.BufferedReader; impo..

    자료구조 - 스택(Stack)의 정의와 예제

    자료구조 - 스택(Stack)의 정의와 예제

    자료구조(Data Structure)란? 데이터를 표현하고 관리하고 처리하기 위한 구조를 의미한다. 그 중 스택과 큐는 자료구조의 기초 개념으로 다음의 두 핵심적인 함수로 구성된다. 삽입(Push): 데이터를 삽입한다. 삭제(Pop): 데이터를 삭제한다. 오버플로(Overflow)와 언더플로(Underflow) 오버플로(Overflow)는 특정한 자료구조가 수용할 수 있는 데이터의 크기를 이미 가득 찬 상태에서 삽입 연산을 수행할 때 발생한다. ⇒ 저장 공간을 벗어나 데이터가 넘쳐흐를 때 발생한다. 언더플로(Underflow)는 특정한 자료구조에 데이터가 전혀 들어 있지 않은 상태에서 삭제 연산을 수행하면 발생한다. 스택(Stack) 먼저 들어 온 데이터가 나중에 나가는 형식(선입후출)의 자료구조이다. ..

반응형