문제풀이 6

[백준] 2751번 수 정렬하기 2 - 정렬(1) [JAVA]

https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 문제 문제 풀이 정렬 문제다. 한번 틀림😇 삽입 정렬의 시작 복잡도는 O(n²)이다. 너무 오래 걸린데!!! 단순히 출력문 문제일줄 알았는데 아니였다. Tim Sort로 풀어야하는 문제이다. Merge Sort(합병 정렬) + Insertion Sort(삽입 정렬)이 합쳐진 정렬이다. 아직 정확히 몰라서 구글링을 했다... 푼 방법 1) 시간을 지키는 게 매우 중요한 문제니까, Buff..

백준 문제풀이 2022.10.06

[백준] 2164번 카드2 [JAVA]

https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 문제 문제 풀이 전형적인 큐 문제이다. 첫 번째 수는 버리고, 두 번째 수는 맨 뒤로 보내 순서를 바꾸는 것을 반복하면 된다. 앞과 뒤가 있으므로 큐를 활용하는 것이 가장 좋다. 푼 방법 1. 큐를 만든다(qu) 2. 1부터 N까지 순서대로 qu에 넣어준다. (front = 1 , back = N) 3. while문을 통해 qu의 size가 1이 될 때까지(size가 1이 되면 break해준다.)..

백준 문제풀이 2022.09.14

[백준] 9012번 괄호 [JAVA]

https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 문제 문제 풀이 생각을 잘못해서 한 번 틀린 문제이다. 처음 생각, 1. size를 0으로 초기화한다. 2. '('의 경우 size에 1을 더해주고, ')'의 경우 size에 1을 빼준다. 3. size가 0이면 VPS이고, size가 1이면 VPS가 아니다. 처음 생각의 잘못된 점 : VPS는 "()"가 한 쌍을 이룬다. 그치만 처음 생각으로 풀게 되었을 경우 ")..

백준 문제풀이 2022.09.13

[백준] 10828번 스택 [JAVA]

https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 문제 풀이 스택의 구현 문제이다. 기존의 스택을 import해오는 것이 아닌 직접 구현하는 방식으로 하자. 푼 방법 1. 구현 시 노드(링크)와 배열을 통해 구현이 가능한데, 배열로 구현하도록 하였다. 2. 배열로 구현시 각 명령에 대해 어떻게 하는지 보도록 하자. *size의 초기값을 -1로 설정하였는데, 그 이유는 인덱싱을 할 때 size를 변형하지 않고 사용하고 싶었기..

백준 문제풀이 2022.09.13

[백준] 10773번 제로 [JAVA]

https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 문제 문제 풀이 전형적인 스택 문제이다. 0일 경우 pop을 해주고 나머지의 경우 push만 해주면 된다. 푼 방법 1. stack을 생성한다. 2. if else 구문을 사용하여 입력된 수가 0인 경우, stack.pop()을 해준다. 3. 입력된 수가 0 이외의 수을 경우, stack.push()을 해준다. JAVA code import java.io.IOEx..

백준 문제풀이 2022.09.11

[백준] 1874번 스택 수열 [JAVA]

https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 문제 풀이 전형적인 스택 문제이다. 자바의 경우 stack을 import해와서 사용하면 된다. 스택엔 push, pop, peek의 기능이 있다.(자바의 경우) push는 스택에 자료를 넣고, pop은 스택에서 자료를 뺀다. peek은 스택의 가장 나중에 들어간 자료를 보여만 주는 기능을 한다. NO가 나오는 ..

백준 문제풀이 2022.09.11