본문 바로가기

전체 글

[코드포스 Practice12] B. New Year and Buggy Bot 코포 시간 내에 못 풀고 끝나고 다시 풀었다 이 문제를 복잡하게 생각해서 백트래킹을 써야하나??? 생각했는데 시간복잡도를 계산해보니 얼마 안 된다. 그래서 완전탐색으로 풀었다. 알고리즘까지는 바로 구현했는데 udlr 4!번 비교하는 데서 문제였다. 4! 섞어서 비교하는데?? 이거랑 mv 문자열이랑 비교를 어떻게 하지?? 싶었지만 어찌저찌 해결했다. #include #include #include #include using namespace std; int main() { int n, m; int s_i, s_j; cin >> n >> m; vector arr(n); string mv; string udlr = "0123"; int ans = 0; //input sort(udlr.begin(), udlr... 더보기
[코드포스 Practice12] A. k-rounding int count_num(i64 n, int div) { int count; count = 0; while (n > 0 && n % div == 0) { count++; n /= div; } return (count); } int main() { i64 n; int k; scanf("%lld %d", &n, &k); if (k == 0) { printf("%lld", n); return (0); } int a = count_num(n, 5); int b = count_num(n, 2); //cout 더보기
[코드포스 Practice12] 후기 11? 넘겨버렸다. 빨리 12 풀고싶었다. 아무튼.. 오랜만에 풀었는데 재밌었다. 한달동안 c언어로만 코딩했는데 갑자기 c++ 쓰려니 이차원 벡터 만드는 법도 까먹고 문자열 어떻게 했는지 까먹고.. 첫 문제 5트 정도 했는데 이유가 %lld로 안 적고 %ld로 적어서.. 내가 짰을 때는 잘 돌아가서 더 못 찾았다ㅋㅋ 맞왜틀 거리다 어이없어서 캡쳐도 해놨었다. 이번에는 어떻게 풀었는지 기억은 잘 안 나는데 A 25분 정도만에 풀고 틀려서 B로 넘어갔다. B는 문제 읽고 오래걸리겠다 싶어서 C로 넘어갔는데 C는 풀 수 없을 것 같아서 다시 A로 넘어와서 해결하고 남은 시간에는 B잡다가 끝난 듯. 빨리 풀이나 적어야지 더보기
2239 스도쿠 전에 마천루 문제 푼 적 있어서 음~~ 쏘 이지~~ 하면서 풀려고 했는데.. ㅋㅋㅋ ㅜㅜ ㅁㅁㅋㅋ 막혔음 푸는 건 N퀸이랑 비슷하다. 백트레킹 사용해서 하나 둬 보고 맞는지 확인하고 두고 쭉쭉 하면 풀리는데..! 막혔다. 정확히는 어디서 막혔냐면 0인 부분만 둬야 하는데 0에 1을 두는 순간 이걸 빈칸으로 인지를 못하고 넘어간다. 블로그 적으면서 생각 났는데 그냥 장애물 배열 하나 더 두는 게 좋을 것 같다. 의지가 있으면 오늘 하고 아니면 내일 해야지. 요즘 기력이 없어서 걱정임. 항상 밖에서 공부하거나 아니면 친구랑 공부하거나 하는데 코로나 때문에 아무것도 못하고 혼자 집에만 있음; 내일은 행아웃으로 사이버 인기척이라도 느껴야지. #include #include using namespace std; .. 더보기
2447 별 찍기 - 10 ㅋㅋㅋ ㅋㅋ ㅋㅋㅋㅋ 아니 이 무슨 해괴한 문제냐고 아악 시도 1 void search(int i) { if (i == 1) { printf("***\n"); return ; } if (i == 2) { printf("* *\n"); return ; } if (i == 3) { printf("***\n"); return ; } search(i - 1); search(i - 2); search(i - 3); } int main() { int i; scanf("%d", &i); search(i); return (0); } 음... 출력해보니 아닌 것 같다. 시도 2 #include using namespace std; void search(int n) { if (n == 1) { printf("*"); re.. 더보기
15652 N과 M (4) 문제를 이렇게 날로 먹어도 될까 #include #include using namespace std; void print_vector(int m, vector v) { for (int i = 0; i < m; i++) { printf("%d ", v[i]); } printf("\n"); } bool promising(int index, vector v) { for (int i = 1; i v[i]) return (false); } return (true); } void find_sequence(int index, int n, int m, vector v) { if (index == m) print_vector(m, v); else { for (int i = 1; i 더보기
15651 N과 M (3) 엥 뭐지..? 이게 1번이 되어야 하는게 아닌가? 걍 다 출력하는데??? 뭐지??? 왜지?? #include #include using namespace std; void print_vector(int m, vector v) { for (int i = 0; i < m; i++) { printf("%d ", v[i]); } printf("\n"); } void find_sequence(int index, int n, int m, vector v) { if (index == m) print_vector(m, v); else { for (int i = 1; i 더보기
15650 N과 M (2) N과 M (1) 앞의 문제와 차이라면 promising 부분.. 오름차순인지 확인하는 걸 추가했다. #include #include using namespace std; void print_vector(int m, vector v) { for (int i = 0; i < m; i++) { printf("%d ", v[i]); } printf("\n"); } bool promising(int index, vector v) { for (int i = 1; i v[i]) return (false); for (int j = 0; j < i; j++) { if (v[i] == v[j]) return (false); } } return (true); } void find_sequence(int index, int .. 더보기