목록백준 (32)
Hayden's Archive
알고리즘 문제 출처 : https://www.acmicpc.net/problem/10808 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net 내가 작성한 코드 아스키코드를 활용하면 쉽게 풀 수 있는 문제 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashMap; import java.util.Stack; public class Main { ..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 내가 작성한 코드 헷갈려서 많이 헤맸던 문제. 스택 없이도 풀어볼 수 있을 것 같아서 이중 for문으로 도전했다가 시간 초과가 나왔다. 이후 스택을 2개를 사용해보기도 했지만 애시당초 접근이 틀렸다. 자료의 크기가 최대 백만개이므로 이중 반복문을 돌릴 경우 백만의 제곱만큼 시간 복잡도가 소요된다. 각설하고, 이 문제는 오큰수를 만나지 못한 인덱스를 스택에 넣어야 한다. 우선 0번째 인덱스..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저� www.acmicpc.net 내가 작성한 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Stack; public class Main { pu..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 � www.acmicpc.net 내가 작성한 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Stac..

알고리즘 문제 출처 : https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 �� www.acmicpc.net 내가 작성한 코드 마지막 요소를 삭제할 때 pop()을 썼는데 자꾸 결과가 이상하게 나오길래 확인해봤더니 첫번째 요소를 삭제해주는 메소드였다. 그래서 pop()을 쓰지 않고 removeLast()를 사용해서 코드를 작성했다. import java.io.BufferedReader; import java.io.BufferedWriter; import jav..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 내가 작성한 코드 너무 어렵게 생각했다. 큐 하나에서 넣고 빼고를 둘 다 한다는 생각을 못해서 큐 2개를 가지고 씨름을 했다. 또 증감 연산자를 써서 m번째를 추출하고 또 해당 변수를 0으로 초기화하고 또 증감연산자를 쓰고 이렇게 하다 보니 시간 초과가 계속 나왔다. 이럴 땐 이중 for문을 돌리는 게 더 빠르다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOExcept..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 �� www.acmicpc.net 내가 작성한 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.LinkedList; ..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/1406 1406번: 에디터 문제 한 줄로 된 간단한 에디터를 구현하려고 한다. 이 편집기는 영어 소문자만을 기록할 수 있는 편집기로, 최대 600,000글자까지 입력할 수 있다. 이 편집기에는 '커서'라는 것이 있는데, 커서는 www.acmicpc.net 내가 작성한 코드 커서를 기준으로 커서 왼쪽은 left 스택, 커서 오른쪽은 right 스택에 쌓는다. 최종 출력할 때 left 스택의 내용물들을 차례대로 꺼내서 append 하고 reverse 한 후에 right 스택의 내용물들을 append 하면 된다. import java.io.BufferedReader; import java.io.BufferedWriter; imp..
알고리즘 문제 출처 : 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 내가 작성한 코드 처음에는 문제가 이해가 되지 않았다. 다시 읽고 이해를 했는데 그러니까 스택에 1,2,3,...,n까지 차례대로 넣을 건데 주어진 숫자가 [4, 3, 6, 8, 7, 5, 2, 1]와 같이 주어졌다면 4를 꺼내기 위해서 1~4까지 스택에 push하고 4가 가장 위에 있을 때 ..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력 첫째 줄에 테스트 케이스의 www.acmicpc.net 내가 작성한 코드 문자를 스택에 push하다가 공백(" ")을 만나면 pop해서 꺼낸다. 마지막 문자열 같은 경우 뒤에 공백이 없는데 그래서 마지막 문자일 경우를 따로 pop해서 꺼낼 수 있도록 조건을 따로 뒀다. Scanner로 하다가 줄 단위로 받는 건 BufferedReader와 BufferedWriter를 사용하는 게 더 좋을 것 같아서 방법을 바꿨다. 또 String ..