일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 이분 탐색
- 비트마스크
- 링크드리스트
- 피보나치 수
- DP
- 시뮬레이션
- 메모리풀
- 스택
- 중복 순열
- 큐
- 분할 정복
- 문자열
- 세그먼트 트리
- Knapsack
- BeautifulSoup
- 우선순위 큐
- 빠른 입출력
- 크루스칼
- 순열
- 그리디
- MST
- 백트래킹
- SSAFY
- dfs
- 재귀
- lis
- BFS
- 완전 탐색
- 조합
- 클래스
- Today
- Total
목록백준 (128)
작심 24/7
15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 빠른 입출력을 요한다고 문제에 cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용하라고 대놓고 적혀있다. 이게 뭐지...? 하고 찾아봤더니 이런 식으로 속도를 확 줄여준다고 한다. 그러나 일종의 편법이므로 알고리즘 풀이에는 사용되지만 실무에선 쓰지 않는다고 한다 ios_base::sync_with_stdio(false); cin.tie(NULL); #include using namespace std; int main() { ios_base::sync_..
- 2018년도 게시글 2839번: 설탕 배달 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬� www.acmicpc.net 처음엔 정수 N에 5를 반복문으로 빼는 형식으로 하다가 인풋 중에 4999가 들어가면 5킬로그램 998개와 3킬로그램 3개, 총 1001이 나와야 하는데 이 방식대로라면 5를 두 번 빼면 4989라는 3의 배수가 나오기 때문에 여기서 멈춰버려 합의 최솟값이 나오지 않는다. 그래서 갈아엎고 정수 N을 5로 나눈 후 거기서 -1한 값을 5로 곱하고 그 값을 N에서 뺀 수가 3의 배수이면,,,, 복잡해 보이지만 생각해낸 모든 예제는 통했던 방법을 써봤..
- 2018년도 게시글 11648번: 지속문제 키파는 곱하기를 좋아한다. 그래서 키파는 수를 보면 각 자리 숫자를 모두 곱해서 하나의 수를 만든다. 키파는 기쁘다. 키파는 이 작업을 계속해서 반복한다. 그런데 수가 한 자리가 되었��www.acmicpc.net예전에 풀었을 땐 c언어로 goto함수 써서 복잡하게 했었는데지금은 조금 다르게 푼 문제이다그런데 while (a!=0)대신 while (a % 10 !=0)를 쓰니 오답이길래무슨 차이가 있나 하면서 고치니 정답이 떴다아무리 생각해도 이게 안 되는 예제가 떠오르지 않는다ㅠ#include using namespace std; int main() { int a; cin >> a; int count = 0; int res = 1; if (a < 10)co..
- 2018년도 게시글 10808번: 알파벳 개수단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.www.acmicpc.net처음에 cin.getline(S, 101); for문 돌리는 수를 101까지로 잡아주니까 틀렸다고 했다. 그래서 getline방식을 바꿨다. 에 있는 getline() 함수 string str; getline(cin,str); //표준 입출력#include #include using namespace std; int main() { string S; getline(cin, S); int alpha[26] = { 0 }; for (int i = 0; i < S.size(); i++) { alpha[(int)S[i] - 97]++; } for ..
- 2018년도 게시글 11719번: 그대로 출력하기 2 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 www.acmicpc.net getline함수 - 최대 버퍼 사이즈(101)만큼 a에 값을 키보드에서 입력받는다(공백까지) cin.getline(char*,buffersize); a의 크기를 100으로 하면 틀렸다고 한다 문자열이라서 그런가? #include #include using namespace std; int main() { char a[101]; int count = 0; while (count
- 2018년도 게시글 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 테스트 케이스의 끝이 정확히 명시되어 있지 않다. EOF (End Of File, 파일의 끝) while문 안에서 입력을 받는다 while(조건문) -> 조건문에 해당되면 계속, 해당되지 않으면 종결 while (scanf("%d %d", &a, &b) != EOF) 입력받은 값이 파일의 끝이 아닌가? -> 해당 -> 계속 파일의 끝일 경우 -> 종결 #include int main() { int a, b; while (scanf("%d %d", &a, &b) != EOF) { printf("%d\n", a + b); } return 0; }
- 2018년도 게시글 1008번: A/B 두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 오차가 10-9까지 허용되기 때문에 나누어 떨어지지 않을 경우 소수점 9자리까지 나오게 해야 한다. +) 맞혔었는데 재채점 이후 틀린 문제이다 ->cout b; cout
- 2018년도 게시글 2869번: 달팽이는 올라가고 싶다 문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 �� www.acmicpc.net 단순하게 반복문으로 풀면 시간 초과된다 예제를 몇 개 더 생각해서 등차수열 공식을 이용하여 풀었다. 1+(V-A)/(A-B) => 날짜 수 대신 예제가 7 1 8 이런 경우 첫째 날 낮 7 밤 6 둘째 날 낮 13 ->답 2 가 나와야 되는데 저 공식대로 하면 1이 나온다. 그래서 (V-A)/(A-B)의 값이 정수가 아닐 경우 day에 1을 더해주는 조건을 추가하면 풀린다. #include using namespace ..