일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- DFS
- C++
- 인덱스 트리
- C++ 1937
- 소트 게임
- c언어
- 프로그래머스
- C++ 1918
- LIS
- 백준
- 백준 숨바꼭질5
- 다익스트라
- 투포인터
- 위상정렬
- 백준 17071
- C++1967
- 조합
- 문자열
- 16933
- BFS
- 가장 긴 증가하는 부분 수열
- Backtracking
- 백트래킹
- 순열
- C++ 17071
- DP
- strtok
- 조합론
- 알고리즘
- C++1167
- Today
- Total
목록문자열 (4)
블로그
골드 Ⅴ 우선 이문제를 더 쉽게 풀기 위해서는 연속된 R들을 모두 하나의 R로 생각하면 더 쉽게 풀 수 있다는 걸 알수있다 근데 그로인해 얻는 오버헤드 없앰이 그렇게 많지 않을거같아서.. 난 그렇게 안함! 아무튼 이 문제 까다로웠던 부분은 벡터(또는 배열)의 인덱스에 접근하는 부분이다. 나는 R과 D를 실제로 수행하는 건 비효율적이라고 생각해서, 입력으로 들어오는 array는 일단 저장해놓고 건드리지 않는다. 그 다음, left idx와 right idx, go_right 이라는 변수를 설정해두고 cmd(R과 D로 이루어짐) 이 어떻게 들어오냐에 따라서 li, ri, go_right의 값을 바꿔주고 그에 따라서 array의 값을 출력해 주도록 하였다. 더 자세히 말하면, R이 들어온 경우 go_right..
solved.ac에서 class 2 필수문제들 다시 풀어보자! 하다가 발견한 문제인데 C++을 쓰면서 scanf/printf를 사용하는 나같은 사람에게는 조금 까다로울 수 있는 문제라서 다시 풀어봤다 이 문제를 푸는 방법은 여러가지가 있겠지만, 우선 포인트는 1. 두가지 우선순위 조건이 있는 정렬 2. 중복 제거 *3. char* string 의 변환 이 있다(3번은 string을 사용하면서 입출력은 scanf/printf 로 처리하면서 해결해줘야 하는 추가적인 문제) 우선, 1번은 다음과 같이 헤더의 sort 함수를 이용하면서 따로 compare 함수를 조건에 맞게 만들어주면 된다 #include using namespace std; bool cmp(const string &s1, const strin..

[C언어] - char[] 1. strtok() 사용하기: 구분자를 특정해 줄 뿐만 아니라 여러 가지로 정해줄 수 있다는 장점이 있음 #include (c++: #include ) char *ret = strtok(char str*, "구분자 집합"); 사용법 예시 char str[500]; scanf("%[^\n]s", str); char* ptr = strtok(str, " "); while (ptr != NULL) { printf("%s\n", ptr); ptr= strtok(NULL, " "); } ex) 입력: 115 365 98 65 출력: 115 365 98 65 다음과 같이 사용하면, char []인 str를 입력받고 구분자 " "(공백)을 기준으로 str를 잘라서 출력해 주는 것을 볼 수..
골드 Ⅲ #include #define MAXK 1000000000 using namespace std; int N, M, K; int nCm[201][201]; void solve(int l, int m, int k) { if (l == 0) return; if (nCm[l -1][m] < k) { printf("z"); return solve(l - 1, m - 1, k - nCm[l - 1][m]); } else { printf("a"); return solve(l - 1, m, k); } } int main() { scanf("%d%d%d", &N, &M, &K); for (int i = 0; i nCm[N + M][M]) printf("-1"); else solve(N + M, M, K); } ..