반응형

Algorithm/백준 212

[백준 알고리즘] 3986번: 좋은 단어 (Python)

https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 소스코드 풀이 ★ 입력받은 문자열의 문자들을 stack에 추가하면서 stack의 뒤에서 두번째 글자부터 끝까지의 글자가 ['A','A'] or ['B','B']일 경우 그 문자열은 좋은 단어이기 때문에 삭제해주는 과정을 진행합니다. ex) ABBA stack = ['A'] stack = ['A','B'] stack = ['A','B','B'] => 'B','B' pop 되고, cnt += 1 stack =[..

Algorithm/백준 2023.06.03

[백준 알고리즘] 17608번: 막대기 (Python)

https://www.acmicpc.net/problem/17608 17608번: 막대기 아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 www.acmicpc.net 소스코드 풀이 ★ n만큼 반복문을 돌면서 stack이 비어있지 않고, 스택의 최상단에 있는 값이 반복문 해당 값보다 작거나 같으면, 스택에서 pop해준 뒤, 해당 값을 append 해줍니다. ex) k = [6,9,7,6,4,6] i = 0, stack = [0] i = 1, stack = [1] i = 2, stack = [1,2] i = 3, stack = [1,2,3] i = 4, stack = ..

Algorithm/백준 2023.06.03

[백준 알고리즘] 5397번: 키로거 (Python)

https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net 소스코드 풀이 ★ 문제에서 커서에 대한 위치가 나올 때 2개의 스택을 활용하여 푸는 문제라고 생각했습니다. 이와 비슷한 문제들이 종종 있는 거 같아용 ★ 입력받은 문자열을 돌면서 x가 괄호를 만나는지, 백스페이스를 만나는지 아니면 문자인지에 따라 수행이 달라지게 됩니다. X == ''을 만날 때는 커서가 오른쪽으로 이동해야 하기 때문에 s2에 있는 마지막 원소를 s1에 추가해줍니다. 만약 ..

Algorithm/백준 2023.06.03

[백준 알고리즘] 9935번: 문자열 폭발 (Python)

https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 소스코드 풀이 ★ 폭발 '문자열'이기 때문에 주어진 문자열의 문자가 떨어져 있는 경우에는 폭발하지 않는다고 생각해야 합니다. ex) a = [C, a, b, d, 4], b = C4 인 경우 답은 Cabd4. ★ 반복문을 돌면서 문자들을 stack에 집어넣습니다. 넣으면서 stack의 최상단 부분부터 폭발 문자열의 길이까지가 폭발 문자열과 같다면 그 문자들을 제거해주면 됩니다.

Algorithm/백준 2023.06.02

[백준 알고리즘] 2493번: 탑 (Python)

https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 소스코드 풀이 ★ 이전에 풀이했던 오큰수 문제와 비슷한 유형의 문제입니다. 레이저를 수신하는 탑이 없다면, 0이 출력되어야 하기 때문에 ans를 0으로 초기화합니다. ★ stack 안에 들어있는 수를 인덱스로 가지는 값이 반복문의 값보다 작으면 stack 안의 값은 답이 될 수 없기 때문에 pop 처리해줍니다. 만약 큰 수일 경우, stack안의 인덱스를 답으로 가질 수 있기 때문에 ans[i]..

Algorithm/백준 2023.06.02

[백준 알고리즘] 17298번: 오큰수 (Python)

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 소스코드 풀이 ★ 오큰수는 해당 수보다 큰 수 중 가장 처음으로 나오는 수입니다. 이번 문제는 일반적인 스택문제는 입력받는 리스트의 요소들을 스택에 넣고, 빼면서 풀이를 진행하지만 오큰수 문제는 입력 값의 '인덱스'를 사용하여 풀어야 하는 문제였습니다 ! ★ 정답을 출력하기 위한 배열 ans는 -1로 초기화합니다. 그 이유는 해당 수의 오큰수가 없을 경우 -1이 출력되어야 하기 때문입니다. ★ 인덱스를 사용..

Algorithm/백준 2023.06.02

[백준 알고리즘] 1918번: 후위 표기식 (Python)

https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 소스코드 풀이 ★ 주어진 문자열을 돌면서 해당 문자가 알파벳이면 ans에 그대로 추가해주고, 연산자일 경우 else문으로 가게 됩니다. ★ 해당 연산자가 '('일 경우 따로 stack에서 pop할 것이 없기 때문에 stack에 추가해줍니다. ★ 해당 연산자가 '+' 혹은 '-'일 경우에는 우선순위가 가장 낮은 연산자이기 때문에 stack이 비어있지 않고, 괄호를 만날 때까지 stack안에 들어..

Algorithm/백준 2023.05.18

[백준 알고리즘] 9093번: 단어 뒤집기 (Python)

https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 입력 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다. 출력 각 ..

Algorithm/백준 2023.05.02

[백준 알고리즘] 10798번: 세로읽기 (Python)

https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 문제 아직 글을 모르는 영석이가 벽에 걸린 칠판에 자석이 붙어있는 글자들을 붙이는 장난감을 가지고 놀고 있다. 이 장난감에 있는 글자들은 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’부터 ‘9’이다. 영석이는 칠판에 글자들을 수평으로 일렬로 붙여서 단어를 만든다. 다시 그 아래쪽에 글자들을 붙여서 또 다른 단어를 만든다. 이런 식으로 다섯 개의 단어를 만든다...

Algorithm/백준 2023.05.02

[백준 알고리즘] 1550번: 16진수 (Python)

https://www.acmicpc.net/problem/1550 1550번: 16진수 첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 0~9와 A~F로 이루어져 있고, A~F는 10~15를 뜻한다. 또, 이 수는 음이 아닌 정수이다. www.acmicpc.net 문제 16진수 수를 입력받아서 10진수로 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 16진수 수가 주어진다. 이 수의 최대 길이는 6글자이다. 16진수 수는 0~9와 A~F로 이루어져 있고, A~F는 10~15를 뜻한다. 또, 이 수는 음이 아닌 정수이다. 출력 첫째 줄에 입력으로 주어진 16진수 수를 10진수로 변환해 출력한다. 소스코드 풀이 ★ 16진수 -> 10진수 포맷팅 방법만 알면 무난히 풀 수..

Algorithm/백준 2023.05.02
반응형