본문 바로가기

Baekjoon/[1] 자료구조22

[백준] 1927번 최소 힙 JAVA (자바) 풀이 문제 1927번(자료구조, 우선순위 큐) :  최소 힙을 이용하여 다음과 같은 연산을 지원하는 프로그램을 작성하시오배열에 자연수 x를 넣는다 (비어있는 배열에서 시작) 배열에서 가장 작은 값을 출력하고, 그 값을 배열에서 제거   [입력] :  첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000) :  다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x (x 는 2³¹보다 작은 자연수 또는 0)     (x가 자연수라면 배열에 x라는 값을 추가, 0이라면 배열에서 가장 작은 값을 출력하고 제거)  [출력] :  입력에서 0이 주어진 횟수만큼 답을 출력 (만약 배열이 비어 있는 경우 0을 출력)    [설명] 힙은 우선순위 큐와 원리가 비슷해 우선순위 큐로 구현할 수 있다  우선순위 큐의 정렬 기.. 2024. 8. 2.
[백준] 11656번 접미사 배열 JAVA (자바) 풀이 문제 11656번 : 접미사 배열은 문자열 S의 모든 접미사를 사전순으로 정렬해 놓은 배열 : baekjoon 접미사를 사전 순으로 정렬 → aekjoon baekjoon ekjoon joon kjoon n on oon [입력] : 첫째 줄에 문자열 S [출력] : S의 접미사를 사전순으로 한 줄에 하나씩 출력 [코드] import java.io.*; import java.util.*; public class Main{ public static void main(String[] args)throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); Str.. 2023. 8. 17.
[백준] 10824번 네 수 JAVA (자바) 풀이 문제 10824번 : 네 자연수 A, B, C, D가 주어진다 이때, A와 B를 붙인 수와 C와 D를 붙인 수의 합을 구하는 프로그램을 작성 (ex) A = 10, B = 20, C = 10, D = 10 일 때 1020 + 1010 = 2030 [입력] : 첫째 줄에 네 자연수 A, B, C, D 입력 [출력] : A와 B를 붙인 수와 C와 D를 붙인 수의 합을 출력 [코드] import java.io.*; import java.util.*; public class Main{ public static void main(String[] args)throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in.. 2023. 8. 17.
[백준] 11655번 ROT13 JAVA (자바) 풀이 문제 11655번 : ROT13은 카이사르 암호의 일종으로 영어 알파벳을 13글자씩 밀어서 만든다 [입력] : 첫째 줄에 문자열 S (알파벳 대문자, 소문자, 공백, 숫자 포함) [출력] : 첫째 줄에 S를 ROT13으로 암호화한 내용을 출력 [코드] import java.util.*; import java.io.*; public class Main{ public static void main(String[] args)throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); for(int i = 0; i='A'&& c'Z'){ c-=26; } } e.. 2023. 8. 16.
[백준] 2743번 단어 길이 재기 JAVA (자바) 풀이 문제 2743번 [입력] : 알파벳 단어 [출력] : 입력된 단어 길이 출력 [코드] import java.io.*; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); System.out.println(s.length()); } } [해설] : String s = br.readLine(); 첫째줄 입력받기 : System.out.println(s.length()); s의 길이 출력 이번에는 정말 간단한 문제네요~! 이제 풀어보러 갈께요 :).. 2023. 8. 16.
[백준] 10820번 문자열 분석 JAVA (자바) 풀이 문제 10820번 : 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성 [입력] : 첫째 줄부터 N번째 줄까지 문자열이 주어진다 [출력] : 첫째 줄부터 N번째 줄까지 각각의 문자열에 대해서 소문자, 대문자, 숫자, 공백의 개수를 공백으로 구분해 출력 [코드] import java.util.*; import java.io.*; public class Main{ public static void main(String[] args)throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = ""; while((s=b.. 2023. 8. 16.
[백준] 10809번 알파벳 찾기 JAVA (자바) 풀이 문제 10809번 [입력] : 첫째 줄에 단어 S : 알파벳 소문자 [출력] : 26 자리를 a ~ z 의 순으로 모두 출력하고 공백으로 구분한다 단, 이 26자리는 알파벳이 아닌 숫자로 표현한다 ( 표현 규칙은 아래와 같다 ) : 입력된 S의 단어에 있는 알파벳들을 0부터 시작해 자릿수를 부여한다 (ex) l o v e → 0, 1, 2, 3 : 부여받은 자릿수를 26자리에 순서대로 해당하는 자리에 넣어준다 (ex) a c b → 0, 1, 2 출력 → 0 2 1 이처럼 a ~ z 순으로 순서대로 출력 : 부여받지 못한 알파벳은 -1 처리 [코드] import java.io.*; public class Main{ public static void main(String[] args)throws IOExc.. 2023. 8. 13.
[백준] 10808번 알파벳 개수 JAVA (자바) 풀이 문제 10808번 : 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성 [입력] : 첫째 줄에 단어 S : 알파벳 소문자 [출력] : 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력 [코드] import java.io.*; import java.util.*; public class Main{ public static void main(String[] args)throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int arr[] = new int[26]; String s = br.readLine(); for(int i =0; i 2023. 8. 9.
[백준] 1918번 후위 표기식 JAVA (자바) 풀이 문제 1918번 : 수식은 일반적으로 3가지 표기법으로 표현 : 연산자가 피연산자 가운데 위치하는 중위 표기법 ( 예: a+b ) 연산자가 피연산자 앞에 위치하는 전위 표기법 ( 예: +ab ) 연산자가 피연산자 뒤에 위치하는 후위 표기법 ( 예: ab+ ) : 후위 표기식 장점은 순서를 적절히 조절하여 순서를 정해줄 수 있어서 괄호 등도 필요 없게 된다 : 중위 표기식을 후위 표기식으로 바꾸는 방법 a+b*c 연산자의 우선순위에 따라 괄호로 묶기 (a+(b*c)) 괄호 안의 연산자를 괄호의 오른쪽으로 옮기기 (a+bc*) 마지막으로 또 +를 괄호의 오른쪽으로 고치기 abc*+ 예시 ) A+B*C-D/E → 결과: ABC*+DE/- [입력] : 첫째 줄에 중위 표기식이 주어진다 : 피연산자는 알파벳 대문.. 2023. 7. 3.
[백준] 1935번 후위 표기식2 JAVA (자바) 풀이 문제 1935번 : 후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성 [입력] : 첫째 줄에 피연산자의 개수 : 둘째 줄에는 후위 표기식(=계산식) 여기서 피연산자는 A~Z의 영대문자이며, 길이는 100을 넘지 않는다 : 그리고 셋째 줄부터는 각 피연산자에 값을 순서대로 넣어준다 : 식의 결과와 중간 결과가 -20억보다 크거나 같고, 20억보다 작거나 같은 입력 [출력] : 계산 결과를 소숫점 둘째 자리까지 출력 [스택 연산] push(e) 스택의 맨 위에 요소 e 추가 pop() 스택의 맨 위 요소를 삭제 peek(s) 스택의 맨 위 요소를 삭제하지 않고 반환 top() 스택 맨 위에 있는 데이터 값 반환 isEmpty() 스택에 원소가 없으면 'True'.. 2023. 7. 1.