목록분류 전체보기 (167)
코디잉
https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net 접근 방식) 풍선이 원형으로 놓여있고, 오른쪽 왼쪽으로 이동 → 앞/뒤로 꺼내서 넣어줘야 함 → Deque 사용 ★ [메모리 초과] Deque 사용할 때 LinkedList로 정의해서 메모리 초과 발생했었다. (ArrayDeque() 로 정의) 1) 풍선 객체 사용 (순서와 종이에 적인 번호 속성 가짐), 앞뒤로 꺼낼 Deque 사용 1번째 풍선은 터뜨린다고 하니까, 그냥 터뜨림..
https://www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net *후위표기식 스택에 피연산자를 넣고, 연산자가 나오면 꺼내서 계산하고 다시 넣어주면 된다. ex. 123*+45/- stack.push(1); stack.push(2); stack.push(3); 연산자 *가 나왔으니까 stack.pop() 2번해서 숫자 2개 꺼내서 결과값을 다시 stack.push(2*3)로 넣어준다. → 2번째로 pop한 숫자 연산자 1번째로 pop한 숫자 접근 방..
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 1) BufferedReader 사용 (230817 다시 풀어봄) 접근 방식) 1. Character 스택 만들어서 T 만큼 반복문 수행 2. 현재 문자열 길이만큼 반복문 수행 2-1. 현재 char가 '(' 면 stack에 push 2-2. 현재 char가 ')' 인데 2-2-1. stack이 비어있다면 noFlag = true 바꾸고 break; 2-2-2. st..
https://www.acmicpc.net/problem/10811 10811번: 바구니 뒤집기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2 www.acmicpc.net 접근 방식) 역순으로 만들 바구니 범위만큼 반복문을 돌아 swap 해준다. package codingTestStudy.week1; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class B_10811 { public sta..
https://www.acmicpc.net/problem/2751 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 접근방식) 숫자 입력받아서 정렬해주면 됨 1) [시간초과] Scanner + Arrays.sort() + System.out.println() 사용 2) [시간초과] Scanner + Collections.sort() + System.out.println() 사용 3) [통과] 그냥 BufferedReader + Collections.sort() + StringBuilder 사용 pac..
https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 접근 방식) 1. 2차원 배열에 x, y 좌표 저장 2. 정렬 방식 정의해서 정렬하고 출력해준다. → y좌표 기준으로 오름차순 정렬 y좌표 같다면, x 좌표 기준으로 오름차순 정렬 package codingTestStudy.week1; import java.io.BufferedReader; import java.io.IOException; ..
https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 접근 방식) 정렬 기준을 새로 정의해주면 된다. 1. 회원 클래스를 만듦 (가입순서, 나이, 이름 속성으로 가짐) 2. 회원을 리스트로 받아서, 정렬기준을 새로 정의하고, 정렬해준다. 3. 출력 package codingTestStudy.week1; import java.io.*; import java.util.*; public class B_10814 { public static void main(S..
https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 접근 방식) 1) 원형으로 사람들이 돌면서 빠지는 거니까, Queue를 만들고 1 ~ N까지 추가한다. 2) Queue가 빌 때까지 반복하면서 count를 증가시킨다. count가 K와 같으면, queue에서 빼고, count = 1로 초기화 count가 K가 아니면, queue의 앞에서 빼서, 다시 뒤에 넣어준다. → queue.add(queue.poll()) package codingTestStudy.week1; import java.io.BufferedReader; impor..
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 접근방식) 먼저 있는 카드가 먼저 나가는 형식이니 Queue 이용 (선입선출) 1. 큐에 1 ~ N 까지의 카드 넣는다. 2. 큐의 size가 1이 될 때까지 반복하면서, 제일 위에 있는 카드는 버리고 그 다음에 위에 있는 카드는 맨 뒤로 넣는다. 3. 하나 남은 카드 번호를 출력한다. package codingTestStudy.week1; import java.io.BufferedReader; ..
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 접근방식) 1. 상근이의 카드 HashSet에 저장 2. 숫자 카드 배열 돌면서 hashSet.contains로 있는지 확인 ** HashSet: contains() 시간복잡도 → O(1) package codingTestStudy.week1; import java.io.*; import java.util.*; public class B_10815 { public s..