- [ 공부/알고리즘 ][자료구조] 스택과 큐2023-12-22 09:17:50스택 삽입과 삭제 연산이 후입선출LIFO로 이뤄지는 자료구조 삽입과 삭제가 한 쪽에서만 일어난다. 새 값이 스택에 들어가면 top이 새 값을 가리킨다. 값을 빼낼 때 pop은 top이 가리키는 값을 스택에서 빼게된다. 깊이 우선 탐색(DFS), 백트래킹 종류의 알고리즘에서 효과적, 후입선출은 재귀함수 알고리즘 원리와 일맥상통하기 때문 스택 용어 top : 삽입과 삭제가 일어나는 위치 push : top 위치에 새로운 데이터를 삽입하는 연산 pop : top 위치에 현재 있는 데이터를 삭제하고 확인하는 연산 peak : top 위치에 현재 있는 데이터를 단순 확인하는 연산 큐 삽입과 삭제 연산이 선입선출FIFO로 이뤄지는 자료구조 삽입과 삭제가 양방향에서 일어난다. 너비 우선 탐색(BFS)에서 자주 사용 ..
- [ 기록/백준 ][백준 / 자바] 1427번 소트인사이드 - 선택정렬2023-12-21 22:23:49https://www.acmicpc.net/problem/1427 1427번: 소트인사이드 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 2143 출력 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. 4321 풀이 자리수를 내임차순으로 정렬하기 때문에 N의 최대값은 10 어느 정렬을 사용해도 가능 공부위해 선택정렬 이용 String n = br.readLine(); // 정렬할 수 문자열로 받기 // 자릿수..
- [ 기록/백준 ][백준 / 자바] 2530번 인공지능 시계2023-12-21 17:54:40https://www.acmicpc.net/problem/2530 2530번: 인공지능 시계 첫째 줄에 종료되는 시각의 시, 분, 초을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수이며, 분, 초는 0부터 59까지의 정수이다. 디지털 시계는 23시 59분 59초에서 1초가 지나면 0시 0 www.acmicpc.net 문제 KOI 전자에서는 건강에 좋고 맛있는 훈제오리구이 요리를 간편하게 만드는 인공지능 오븐을 개발하려고 한다. 인공지능 오븐을 사용하는 방법은 적당한 양의 오리 훈제 재료를 인공지능 오븐에 넣으면 된다. 그러면 인공지능 오븐은 오븐구이가 끝나는 시간을 초 단위로 자동적으로 계산한다. 또한, KOI 전자의 인공지능 오븐 앞면에는 사용자에게 훈제오리구이 요리가 끝나는 시각을..
- [ 기록/백준 ][백준 / 자바] 2744번 대소문자 바꾸기2023-12-21 16:38:17https://www.acmicpc.net/problem/2744 2744번: 대소문자 바꾸기 영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 영어 소문자와 대문자로만 이루어진 단어가 주어진다. 단어의 길이는 최대 100이다. WrongAnswer 출력 첫째 줄에 입력으로 주어진 단어에서 대문자는 소문자로, 소문자는 대문자로 바꾼 단어를 출력한다. wRONGaNSWER 풀이 import java.util.Scanner; public class M..
- [ 기록/백준 ][백준 / 자바] 2750번 수 정렬하기 - 버블정렬2023-12-21 14:58:30https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 5 5 2 3 4 1 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 1 2 3 4 5 풀이 N의..
- [ 공부/알고리즘 ][알고리즘] 구간 합2023-12-21 09:37:58합 배열 기존 배열을 전처리한 배열로 합배열을 미리 구해 놓으면 기존 배열의 일정 범위의 합을 구하는 시간 복잡도가 O(1)로 감소 합배열 s의 정의 s[i] = a[0] + a[1] + ... + a[i] a[i]~a[j]까지 배열 합을 합 배열 없이 구하는 경우 최악의 경우 시간 복잡도가 O(N) 합 배열을 사용하면 O(1)안에 답을 구할 수 있다. 합 배열을 만드는 공식 S[i] = S[i-1] + A[i] 구간 합 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘 구간 합 알고리즘을 활용하기 위해선 합 배열을 우선 구해야 한다. 구간 합을 구하는 공식 S[j] - S[i-1] 관련 문제 보기 백준 11659번 구간 합 구하기 4
- [ 기록/백준 ][백준 / 자바] 10757번 큰 수 A+B2023-12-20 15:23:56https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 < A,B < 10^10000) 9223372036854775807 9223372036854775808 출력 첫째 줄에 A+B를 출력한다. 18446744073709551615 풀이 import java.math.BigInteger; import java.util.Scanner; public class Main { public static void main(String[] args)..
- [ 기록/백준 ][백준 / 자바] 10872번 팩토리얼2023-12-20 15:11:32https://www.acmicpc.net/problem/10872 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다. 10 출력 첫째 줄에 N!을 출력한다. 3628800 풀이 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); if(n < 2) { System..