목록코테준비 (119)
끄적끄적
1. 괄호 (9012) 출처 : https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 1. C++ 스택과 문자열을 이용하는 문제 ( 이면 push해주고, )이면 스택이 비지 않았을 때('('이 있다는 뜻) pop해줌. 반대로 스택이 비었으면 ('('이 없으므로 짝이 없어서 VPS가 아님) false +예전에 파이썬으로 푼 것 *stack 구현시 list 사용 input으로 받아진 문자열 s를 바로 list로 집어넣어준다..
출처 : https://www.acmicpc.net/problem/23304 23304번: 아카라카 주어진 문자열 $S$가 아카라카 팰린드롬이라면, AKARAKA를 출력한다. 만약 그렇지 않다면, IPSELENTI를 출력한다. www.acmicpc.net 문자열과 재귀 우선 해당 문자열이 팰린드롬인지 체크 후, S/2 의 길이의 접두사와 접미사도 팰린드롬인지 체크 이에 해당하지 않는 것은 전부 false 또한, 이러한 팰린드롬 유형의 문제를 풀 때는 문자열 길이가 홀수, 짝수일 때를 구분해야함.
출처 : www.acmicpc.net/problem/17298 문제 크기가 N인 수열 A = A1, A2, ..., AN이 있다. 수열의 각 원소 Ai에 대해서 오큰수 NGE(i)를 구하려고 한다. Ai의 오큰수는 오른쪽에 있으면서 Ai보다 큰 수 중에서 가장 왼쪽에 있는 수를 의미한다. 그러한 수가 없는 경우에 오큰수는 -1이다. 예를 들어, A = [3, 5, 2, 7]인 경우 NGE(1) = 5, NGE(2) = 7, NGE(3) = 7, NGE(4) = -1이다. A = [9, 5, 4, 8]인 경우에는 NGE(1) = -1, NGE(2) = 8, NGE(3) = 8, NGE(4) = -1이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 ..
출처 : https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 왼쪽에서 오른쪽 방향으로 진행한다. 현재 탑과 stack 안에 있는 top을 비교하여 top보다 현재 탑이 크면 현재 탑에 부딪히므로 top은 필요가 없어서 pop하고 현재탑 push top보다 현재 탑이 작으면 pop시키지 않고 현재탑 push(우선순위는 거리이므로) 이때 top에 해당하는 탑을 pop하지 않는 이유는 뒤에 현재탑보다 크면서 top보다 작은 탑이 존재할 수 있기 때문 ..
출처 : https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 www.acmicpc.net 1. c++ push할 때 미리 곱해주고 이 묶음을 끝내는 쌍을(닫는 괄호) 찾으면(가장 안쪽 괄호-> 따라서 가장 직전의 값이 되는 것) 그동안 곱해진 값을 answer에 더해주고 tmp를 곱했던 만큼 나눠주기 나머지 닫는 괄호는(스택의 top) 이미 계산되었으므로 따로 answer에 더하지 않는다. 2. python python stack 리스트로 처리 push -> append()..
출처 : https://programmers.co.kr/learn/courses/30/lessons/17680 맨 앞 원소로부터 i번째에 있는 원소 삭제 toupper, tolower 문자를 대문자, 소문자로 바꿔주는 함수. char형에만 적용되므로(string으로는 안됨) cities 문자열에 각 문자로 접근하여 각각 적용시켜줘야 한다. 2. python deque를 이용해서 풀었다. 도시이름은 대소문자 구분을 따로 하지 않는다고 했으므로 다 소문자로 바꾸어서 넣어준다. 도시 이름이 dq에 있으면 +1을, 없으면 +5를 해준다. 또한 도시 이름이 dq에 있으면 해당 도시를 제거하고, dq가 꽉찼을 경우 도시 이름이 없다면 맨 앞의 도시를 제거해준 후 동일하게 현재 도시 이름을 dq에 추가해줌.
출처 : https://programmers.co.kr/learn/courses/30/lessons/17681?language=cpp 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 주어진 숫자를 이진법으로 바꾸는 함수를 이용해서 푸는 방법을 생각하고 있었는데, 비트연산자를 사용하여 간단히 해결할 수 있는 문제였다. int num = arr1[i] | arr2[i] OR 연산 의미 예를 들어 arr1[i]가 10001이고 arr2[i]가 10101이라면 num은 10101이 된다. 2진법에서만 사용할 ..

출처 : https://programmers.co.kr/learn/courses/30/lessons/17682?language=cpp 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 주의할 점 이 조건에 따라 *이 나올 시 해당 점수와 바로 전 점수만 2배가 되어야하니 바로 전 점수를 저장할 prev변수와 해당 점수를 저장하는 cur 변수를 만들어 관리. 숫자는 0~10이 나올 수 있으므로 한자리 수가 아닐 수 있다. 또한, 10이 나올 경우, *, #이 나올 경우는 이미 전 문자에서 완료했으므로 i++을 해줌으로써 다음 문자로 넘어간다.