BOJ - 괄호 9012
·
코딩테스트
해결방법스택을 사용한 문제이다.구조는 다음과 같다.(을 만나면 스택을 추가. )을 만나면 스택의 top을 제거.만약 스택이 없는데 )을 만나는 경우 flag를 설정하고 루프를 끝내버린다. 만약 스택이 비어있지 않거나 flag가 올라가 있다면 잘못된 경우이므로 NO가 출력되고 그렇지 않다면 YES가 출력되는 구조이다. 정답 코드#include #include using namespace std;int main(){ int TestCase, count = 0, flag = 0; string PS; cin >> TestCase; for (int i = 0; i stack; cin >> PS; for (int j = 0; j
BOJ - 큐 10845
·
코딩테스트
해결방법대놓고 큐를 사용하라고 하는 문제이다.일단 큐의 개념을 살펴보자면 FIFO 구조로 되어 있어 먼저 들어온 애가 가장 먼저 뽑히고, 나중에 들어온다면 맨 뒤로 가는 구조이다. STL에 큐가 있으니 그것을 활용해보았다. 정답 코드#include #include using namespace std;int main(){ queue Queue; string CMD; int N, num; cin >> N; for (int i = 0; i > CMD; if (CMD == "push") { cin >> num; Queue.push(num); } if (CMD == "pop") { if (Queue.size() == 0) { cout
BOJ - 카드2 2164
·
코딩테스트
해결방법큐를 사용하는 문제이다.N장의 카드를 입력하고, 큐의 사이즈가 1이 아니라면 카드를 뽑고, 그 다음 카드를 큐에 집어넣고, 이 시점에서 큐의 카드가 1장이라면 반복문을 탈출하고 아니라면 다시 카드를 뽑는 식으로 반복문을 돌려준다. 정답 코드#include #include using namespace std;int main(){ queue Q; int N; cin >> N; for (int i = 1; i
BOJ - 숫자카드 2 10816
·
코딩테스트
해결방법핵심은 숫자가 -10000000부터 10000000까지 존재한다는 것을 음수로 저장하는 것이 아니라 10000000을 미리 더해줘서 음수를 양수처럼 처리한다는 것이다. 수를 입력받으면 count[temp + DEFAULT] 이런 식으로 아예 그 수의 값을 1씩 증가시키는 방식으로 정리한다. 그다음 수를 입력받으면 그 수의 빈도수를 동일하게 cout  정답 코드#include #include using namespace std;const int DEFAULT = 10000000;const int SIZE = 20000001;int main(){ ios::sync_with_stdio(false); cin.tie(0); int N, M, temp; vector count(SIZE,..
BOJ - 요세푸스 문제 0 11866
·
코딩테스트
해결방법큐를 활용해야 하는 문제.큐의 구조는 FIFO(First In First Out)구조라는 것을 생각해보면 맨 처음 들어온 것이 맨 위에 있다고, 입력을 받으면 맨 밑으로 들어간다는 것을 알 수 있다.따라서 N개의 수를 1부터 입력하고, 맨 위의 수를 더미로 저장한다음 하나씩 Pop을 하면서 count를 체크하고 K번째가 아니라면 다시 Push해주는 식으로 하면 된다. 정답 코드#include #include using namespace std;int main(){ int N, K, count = 0; cin >> N >> K; queue Q; for (int i = 0; i "; return 0;}
BOJ - 팩토리얼 0의 개수 1676
·
코딩테스트
해결방법의외로 쉬웠던 문제. N팩토리얼을 계산해서 그 수를 뒤에서부터 0이 몇개인지 세는 문제인데, 결국 0이 나오려면 10을 곱해야 한다는 것과 10은 2 * 5라는 것을 이용해서 5의 배수가 몇개 있는지를 세면 되는 문제이다(2의 배수는 너무 많으니까). 정답 코드#include using namespace std;int main(){ int N; int Five, FiveSqrt, FiveSSqurt; cin >> N; Five = N / 5; FiveSqrt = N / 25; FiveSSqurt = N / 125; cout