의외로 골드V에 날먹이 많구만 아주 좋다. www.acmicpc.net/problem/17828 느낌표를 출력해야 하는 경우는 단 두가지밖에 없다. 1 ) ZZZZZZ와 같이 길이가 N일때의 가치를 최대로 해도 X에 미치지 못하는 경우 2 ) N일때의 가치를 최소로 해도 X보다 커지는 경우 각각 n*26 x 라는 수식을 통해 판별해줄 수 있다. 사전순으로 앞서는 문자열을 만들기위해서는 다른건 다 무시하더라도 앞에 오는 A의 개수가 가장 많아지면 될 것이다. 그렇기에 최대한 타이트한 선까지 A를 출력하고, A와 Z 사이에 "단 한글자만" 남는 가치를 매꾸고, 남은 모든 길이를 Z로 출력해주면 사전순으로 가장 앞서는 문자열이 만들어지게 된다. 더보기 #include using namespa..
www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 www.acmicpc.net 브루트포싱. 처음 보고 든 생각은 그냥 최대값까지 for문 돌리면서 감소하는 수들을 벡터에 담는 것이었는데, 이렇게 하자니 TLE가 나올것이 눈에 보여서 다른 방법으로 접근해보도록 했다. 가장 큰 감소하는 수는 9876543210일것이고, 가장 작은 감소하는 수는 0이 된다. 감소하는 수들의 특징은 수들의 정렬 순서가 내림차순으로 일정하다는 것인데, 확률과통계를 배우는 고딩들은 알겠지만 정렬 순서..
오늘 학원에서 써먹은 개념을 그대로 쓸수 있었던 문제 nHr 중복조합을 구현하면 되는 문제이다. 0
비트DP였다. 방문한 적이 있는 숫자들을 비트에 박아넣으면 된다. www.acmicpc.net/problem/1562 1562번: 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net dp[i][j][k] 를 현재 문자열 길이가 i이고, 지금 제일 앞 숫자가 j이고, chk 비트필드가 k일때로 뒀다. 더보기 #include #define MOD 1000000000 using namespace std; typedef long long ll; ll dp[123][12][19) return 0; if(len == n){ if(bit == (1
맞왜틀이 심했던 문제 vis배열을 초기화하자!! *복창중* www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 이상하리만치 MLE가 박혀서 결국 VIS배열 박았다... :thinking: #include using namespace std; queue q; int input,ans; int d1,d2,d3,d4; int k,t; string s; int vis[12345] = {0}; void bfs(){ while(!q.empty()){ k = q..
www.acmicpc.net/problem/7662 7662번: 이중 우선순위 큐 입력 데이터는 표준입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 Q에 적 www.acmicpc.net 보통 PQ두개 써서 구현하겠지만 나는 Multiset을 써서 구현해봤다 삽입은 O(logN), 삭제는 amortized O(1)에 동작하므로 충분히 AC를 받기에 적합한 시간복잡도이다. multiset::end()는 마지막 값보다 한칸 더 뒤에 있는 위치를 가리키므로 erase를 통해 지우려면 (--s.end())로 써줘야 정상적으로 지울 수 있다. 더보기 #include using namespace std..