목록백준 (183)
Study hard
https://www.acmicpc.net/problem/9012 9012번: 괄호 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)�� www.acmicpc.net [풀이] 두 가지 방법을 통해 풀어보았다. 1. int형 변수를 사용하여 '('가 나오면 +1, ')'가 나오면 -1 하는 방법 2. stack을 사용하여 '('가 나오면 push 1, ')'가 나오면 pop 하는 방법 ※공통적으로 주의할 점 -맨 처음에 ')'가 나오거나 맨 뒤에 '('가 나오는 경우는 무조건 "NO" -')'와 짝을 이루는 '('가 앞에 없는 ..
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 � www.acmicpc.net [풀이] C++ STL의 stack을 사용하여 풀 수 있다. 순서대로 명령을 입력받자마자 그 명령에 해당하는 일을 처리한다. #include #include #include using namespace std; void solution() { stacks; int N, pushNum; string str; cin >> N; for (int i = 0; i < N; i++) {..
https://www.acmicpc.net/problem/11004 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net [풀이] C++ STL의 sort함수를 이용하여 정렬하고, K번째에 있는 수를 출력하면 된다. #include #include #include //sort #include using namespace std; int N, K; vectorA; void input() { int n; scanf("%d %d", &N, &K); for (int i = 0; i < N; i++) { scanf("%d", &n); A.push_back(n); } } void..
https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net [풀이] C++ STL의 sort함수를 사용한다. 적혀있는 수의 범위가 크므로 long long타입을 사용한다. 정렬 후 숫자 카드의 개수의 최댓값을 갱신하며 가장 많이 가지고 있는 정수를 찾는다. #include #include #include //sort using namespace std; int N; vectorv; void input() { long long n; cin >> N; ..
https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net [풀이] 처음에 C++ STL의 sort함수를 이용하여 풀려고 하였으나, 메모리 초과가 떴다. 그래서 원소의 개수가 10001인 배열 Num[]을 만들어 입력 받는 수 x에 대해 Num[x]의 수를 +1 하여 해당 수가 몇 번 들어왔는지 기록한 뒤, Num[1]~Num[10000]까지 0보다 큰 값이 있는 index를 값만큼 출력하는 프로그램을 짰다. 이 방법을 쓸 때 cin, cout을 썼더니 시간초과가 떴다. ..
https://www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net [풀이] C++ STL의 sort함수를 이용하여 해결할 수 있다. 문제의 조건에 맞는 사용자 함수를 만들어 sort의 세 번째 인수로 넣어야 한다. #include #include #include #include //sort using namespace std; struct Score { string name; int Kor, Eng, Math; }; int N; vector..