목록알고리즘 문풀/백준 (24)
혼자 정리
문제링크 C++ #include using namespace std; int arr[50001]; void find(int N) { arr[0] = 0; arr[1] = 1; for (int i = 2; i arr[i - j * j] + 1: # print(i, j) arr[i] = arr[i - j * j] + 1 print(arr[N]) 모든 제곱수는 한 개의 제곱수로 나타내어질 수 있다는 것을 파악하는 것이 관건이었다. $O(N^{3/2})$의 시간 복잡도로 풀었다. ($N * \sqrt{N}$?) 파이썬에서 기존 c에서와 같은 for문은 안 되므로 굳이 그런 형태를 원한다면 while문을 써야 하려나? Python3에서는 시간초과, pypy3에서는 통과했다. pypy에서는 그만큼 메모리를 더 많이..
문제링크 CPP 코드 #include #include using namespace std; int M; int S; string cmd, num; void do_add(int &S) { cin >> num; S |= (1 > num; S &= ~(1 > num; if ((S & (1 0) cout num; if ((S & (1 0) { S &= ~(1 M; for (int i = 1; i > cmd; if (strcmp(cmd.c_str(), "add") == 0) do_add(S); else if (strcmp(cmd.c_str(), "remove") == 0) do_remove(S); else if (strcmp(cmd.c_str(), "check") == 0) do_check(S); else if ..
문제링크 #include #include #include using namespace std; int N, M; string temp; map maps; string arr[100001]; int main() { ios::sync_with_stdio(0); cin.tie(0); cin >> N >> M; for (int i = 0; i > temp; maps.insert(pair(temp, i + 1)); arr[i + 1] = temp; } for (int i = 0; i > temp; if (isdigit(temp[0])) { cout