전체 글 299

[BOJ] 10828번: 스택

https://www.acmicpc.net/problem/10828 6달 전에 짠 코드는 4ms가 나왔는데 똑같은 코드로 이틀 전에 제출했더니 0ms가 나왔다. ㅋㅋㅋ 재미있네 이런 문제는 사실 N의 제한이 있기 때문에 굳이 링크드 리스트로 구현할 필요는 없다. 그리고 문자열을 다 볼 필요 없이 앞 1~2자리만 봐도 어떤 입력인지 알 수 있다. #include #include #define MAX 10001 typedef struct stack { int Stack[MAX]; int size; int empty; int top; } stack; stack Stk; int main() { Stk.empty = 1, Stk.size = 0; int N; scanf("%d", &N); for (int i = ..

온라인저지 2018.07.26

[BOJ] 15904번: UCPC는 무엇의 약자일까?

https://www.acmicpc.net/problem/15904 이런 문제 좀 재미있다 ㅎㅎ 공백도 받은 방법은 getline(cin, [string])이라는 것도 다시 상기시키는 좋은 계기가 되었다. #include #include using namespace std; int main() { ios_base::sync_with_stdio(false), cin.tie(0); const char al[] = {'U', 'C', 'P', 'C'}; string str; int idx = 0; getline(cin, str); for (auto &i : str) { if (idx == 4) break; else if (i == al[idx]) idx++; } if (idx == 4) cout

온라인저지 2018.07.26

[BOJ] 11651번: 좌표 정렬하기 2

https://www.acmicpc.net/problem/11651 11650번: 좌표 정렬하기에 이은 STL 연습용 문제다. 주어진 조건에 따라 코드로 잘 적으면 된다. #include #include #include #include using namespace std; bool COMP(const pair &a, const pair &b) { if (a.second == b.second) return a.first < b.first; return a.second < b.second; } int N; vector v; int main() { scanf("%d", &N); for (int i = 0, a, b; i < N; ++i) { scanf("%d %d", &a, &b); v.push_back(ma..

온라인저지 2018.07.26

[BOJ] 11650번: 좌표 정렬하기

https://www.acmicpc.net/problem/11650 문제에서 하라는데로만 하면 되는데 COMP함수만 잘 짜면 된다.(주어진 조건에 따라서...) STL을 연습하는 문제였다. #include #include #include #include using namespace std; bool COMP(const pair &a, const pair &b) { if (a.first == b.first) return a.second < b.second; return a.first < b.first; } int N; vector v; int main() { scanf("%d", &N); for (int i = 0, a, b; i < N; ++i) { scanf("%d %d", &a, &b); v.push..

온라인저지 2018.07.26

[BOJ] 2747번: 피보나치 수

https://www.acmicpc.net/problem/2747 n번째 피보나치 수를 출력하는 문제다. 재귀 또는 반복문으로 풀 수 있다. + 메모이제이션 #include int dp[46] = {0, 1, 1, 2}; int fibo(int n) { if (dp[n]) return dp[n]; return dp[n] = fibo(n - 1) + fibo(n - 2); } int main() { int N; scanf("%d", &N); printf("%d\n", fibo(N)); return 0; } #include int main() { int f[100], n; f[0] = 1, f[1] = 1; scanf("%d", &n); for (int i = 2; i

온라인저지 2018.07.26

[BOJ] 2750번: 수 정렬하기

https://www.acmicpc.net/problem/2750 정말 여러 가지 방법으로 풀 수 있다. 우선순위 큐, 정렬 등등... (아마 set이나 map으로도 가능할 거다) 우선순위 큐는 기본적으로 큰 수부터 pop 하기 때문에 -를 붙여서 넣어주고 -를 붙여서 빼주면 오름차순으로 pop 할 수 있게 된다. 아니면 우선순위 큐 정의할 때 의 greater를 사용하면 가능하긴 하지만 귀찮으니까 위의 방법을 애용하자. // 우선순위 큐로 해결하기 #include #include using namespace std; priority_queue pq; int main() { int n; scanf("%d", &n); for (int i = 0, a; i < n; ++i) { scanf("%d", &a);..

온라인저지 2018.07.26