CS/Algorithm 문제
[BaekJoon]백준 9012번 괄호
[BaekJoon]백준 9012번 괄호 문제: https://www.acmicpc.net/problem/9012 내코드 -엄청 간단한문제였다. -stack을 이용해서 '('인경우 push해주고 ')'인 경우 pop을 해줘서 -pop을 해줘야하는데 top의 값이 -1이거나 -testCase가 끝났는데 stack안에 아직 값이 남아있어서 top이 -1이 아닌경우 -NO를 출력해줘야한다. #include #include using namespace std; int main(void) { ios::sync_with_stdio(false); cin.tie(0); int testCase; cin >> testCase; while (testCase--) { int stack[100]; int top = -1; str..
[BaekJoon]백준 5430번 AC - C++, Python
[BaekJoon]백준 5430번 AC 문제: https://www.acmicpc.net/problem/5430 내코드 -처음에 문자열 파싱하는 부분이 어려웠다. -[1,2,3] 이렇게 주어졌을때 1, 2, 3을 deque에 넣어야했다. -헷갈렸던 부분은 숫자가 두자리 숫자가 주어질 수도 있었다는것. -','를 만나면 tmp를 deque에 push_back 시켜주고 tmp를 0으로 초기화 시켜주고, ','이 아닌경우 10의 자리수인경우 해당값을 tmp에 넣어주고, 1의 자리수인경우 (tmp에 들어있는 10의 자리수 숫자 * 10 + 1의 자리수 숫자)를 해줬다. -그외에는 크게 어려운 부분이 없었다. -R이 나왔을때는 숫자 배열이 뒤집어졌다는 표시로 bool 변수 back = true;를 시켜주고 출력할..
[BaekJoon]백준 1021번 회전하는 큐
[BaekJoon]백준 1021번 회전하는 큐 문제: https://www.acmicpc.net/problem/1021 내코드 -처음에 자료구조 선택할때 배열(자유로운 원소 삽입/삭제가 힘듬), stack, queue(양방향 삽입/삭제 불가) 등의 이유와 함께 자료구조에서 양방향 이동이 있는 문제라는 것을 알고 deque을 사용 -풀이의 기본틀 -> pop해야하는 원소의 위치를 구해서 -> 만약 left쪽으로 이동하는 경우 연산 횟수 & 만약 right쪽으로 이동하는 경우 연산 횟수를 구해서 더 작은 수를 선택한다 -> 만약 left쪽으로 이동하는 경우 front의 원소를 back에 push_back해주면서 pop_front해준다. 즉, 한칸씩 이동해준다. -> 이동이 완료되면 주어진 수를 pop_fro..
[BaekJoon] 백준 1874번 스택 수열
백준 1874번 스택 수열 문제: https://www.acmicpc.net/problem/1874 내코드 문제 풀이 (1-1) max값(현재 입력값중 최대값, 초기값은 0)이 입력값 보다 작으면 (max+1) ~ 입력값까지 push해준다. (1-2) 크거나 같은 경우 pop을 해줘야 하므로 스택의 top이 입력값과 같은지 체크한다. 같지 않을 경우 NO를 출력하며 프로그램 종료. (2) pop을 해준다. (3) max값이 입력값보다 작으면 max값을 입력값으로 초기화 해준다. 주의점 - endl 는 버퍼를 비우기 때문에 느림. 시간초과가 남. "\n"을 써주자. #include #include using namespace std; int stack[100000]; int top = 0; char * r..
[BaekJoon] 백준 1919번 애너그램
백준 1919번 애너그램 문제: https://www.acmicpc.net/problem/1919 내코드 -계속 배열을 0으로 초기화 안해줘서 틀림. 배열 쓸때 처음에 초기화 필수! #include #include using namespace std; int main(void) { ios::sync_with_stdio(false); cin.tie(0); int arrA[26]; int arrB[26]; string A, B; cin >> A >> B; for (int i = 0; i < 26; i++) { arrA[i] = 0; arrB[i] = 0; } for (int i = 0; i < A.length(); i++) { arrA[A[i] - 'a']++; } for (int i = 0; i < B.l..
[BaekJoon] 백준 5397번 키로거
백준 5397번 키로거 문제: https://www.acmicpc.net/problem/5397 코드 -처음에 vector로 풀려고 했더니 계속 시간초과남. -vector의 가장 큰 특징 중 하나는 원소가 하나의 메모리 블록에 연속하게 저장된다는 것. 따라서 원소가 연속하게 저장되므로 [] 연산자 또는 at 으로 읽기에는 빠르지만 insert(), erase(), push_back() 등은 비효율적으로 동작 -원소의 삽입, 삭제가 자유롭고 효과적인 list로 짜야함(stack으로 짠 경우도 있음 https://deliorange.tistory.com/66) #include #include #include using namespace std; int main() { ios::sync_with_stdio(f..
[BaekJoon] 백준 1475번 방번호
백준 1475번 방번호 문제: https://www.acmicpc.net/problem/1475 내코드 #include #include using namespace std; int main(void) { ios::sync_with_stdio(false); cin.tie(0); int arr[10], max = 0; string num; cin >> num; for (int i = 0; i < 10; i++) { arr[i] = 0; } for (int i = 0; i < num.length(); i++) { if (num[i] == '9' || num[i] == '6') { arr[6]++; } else arr[num[i] - 48]++; } arr[9] = arr[6] / 2; if (arr[6] % ..
[BaekJoon] 백준 1158번 요세푸스 문제
백준 1158번 요세푸스 문제 문제: https://www.acmicpc.net/problem/1158 내 코드 #include #include using namespace std; int main(void) { ios::sync_with_stdio(false); cin.tie(0); vector arr; int n, k; cin >> n >> k; for (int i = 0; i < n; i++) { arr.push_back(i + 1); } int idx = k - 1; cout 1) { cout