목록2024/11 (31)
피너클의 it공부방

위와 같은 그래프가 있다라 해보자위에서 강한 연결 요소를 찾아보면아래 처럼 찾을 수 있다.첫번째 정점에서 두번째 정점으로 간뒤 다시 첫번째 정점으로 돌아올수있으면 강한 연결 요소다.위에서 2에서 3으로 이동한뒤 3 -> 4 -> 2 이렇게 이동할수있다.5에서 6으로 이동하고 6 -> 5로 이동할 수 있으니 5, 6도 강한 연결 요소다. 그렇다면위에서는 강한 연결 요소가 어떻게 될까?1,2 | 2,3 이 아닌 1, 2, 3 이 강한 연결 요소다.강한 연결 요소는 가능한 최대의 크기여야한다. 이제 위의 그래프에서 강한 연결 요소를 구하는 과정을 살펴보자.먼저 배열들을 준비해줄거다.dfsn은 각 정점의 번호를 저장한다. 위의 그래프는 숫자로 이루어져 있지만 숫자가 아닌 ABC같은 경우도 있을 수 있으니 깊이 ..
https://www.acmicpc.net/problem/2295 투포인터로 풀었다.int n;unordered_map visited;int arr[1001];int sum[1000001];int len = 0;선언 변수들이다. n = 1000 이므로 삼중 반복문을 돌리면 시간이 1000 ^ 3이 되어버려 제한시간안에 끝내지 못한다.그렇기에 이전에 arr에서 합을 따로 하나 구해놓을 것이다. 그것이 sum이다.visited는 sum안에 겹치는 숫자가 들어가지 않게 해준다.len은 sum의 길이다. cin >> n; for (int i = 0; i > arr[i]; } sort(arr, arr + n);값들을 입력받은뒤 정렬해준다. 반드시 정렬해줘야햔다. for (int..

계속 실행하면 아래 프로그램이 실행되고 있다고는 뜨는데게임에 들어가면 다시 튕겨져 나와지고를 반복했다.그런데 디스플레이 해상도를 낮춰버리니까 작동이 잘된다.
https://www.acmicpc.net/problem/7785그냥 set을 이용해 구현하는 문제다.#include #include #include using namespace std;int n;set s;string a, b;int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for (int i = 0; i > a >> b; if (b == "enter") { s.insert(a); } else { s.erase(a); } } set::reverse_iterator iter; for (iter = s.rbegin(); iter != s.rend(); iter++) { cout 전체코드다. 들어와야 나갈수 있..

위에서 breakout.js에 getcontext가 있는데 자꾸 오류가 났다.그런데 스크립트를 canvas 아래로 내려버리니까 오류가 사라졌다.아마 캔버스가 선언되지 않았는데 자바스크립트에서 가져오려고 해서 오류가 난거같다.
https://www.acmicpc.net/problem/9506 수학문제다.int n;bool b[50001];int arr[50001];int len;n은 입력받는 숫자이고b는 약수인지 아닌지 기록하는 bool배열arr은 약수가 담기는 배열, len은 arr의 길이다. while (true) { cin >> n; if (n == -1) break; for (int i = 2; i 미리 세팅을 해둔다.for (int i = 2; i n/2까지만 반복문을 돌리며 만약 n이 i로 완전히 나누어떨어지고 약수로 체크가 되지 않았다면i와 n를 i로 나눈 수를 기록해주고 arr에 둘다 기록해준뒤 sum에 더해준다.arr[len] = 1;len += 1;sort(arr, arr + len);반복문에서 나오면 ..
https://www.acmicpc.net/problem/32684 그냥 구현문제다.#include using namespace std;double co, ek;int main(){ int a, b, c, d, e, f; cin >> a >> b >> c >> d >> e >> f; co = a * 13 + b * 7 + c * 5 + d * 3 + e * 3 + f * 2; cin >> a >> b >> c >> d >> e >> f; ek = a * 13 + b * 7 + c * 5 + d * 3 + e * 3 + f * 2 + 1.5; if (co > ek) cout
https://www.acmicpc.net/problem/11005구현문제다. 10진수로 64823이 있다라 해보자. 우리는 이걸 어떻게 10진수로서 보고있을까64823을 10으로 나눴을때 나머지는 3이다. 그럼 6482가 남는다.6482를 10으로 나눴을때 나머지는 2이다. 그럼 648이 남는다.648를 10으로 나눴을때 나머지는 8이다. 그럼 64이 남는다.64를 10으로 나눴을때 나머지는 4이다. 그럼 6이 남는다.6를 10으로 나눴을때 나머지는 6이다. 그럼 0이 남는다. 우리는 이렇게 보고있다.예제를 봐보자 60466175 이 숫자를 36으로 나눴을때 나머지는 35이다. 그럼 1679615이 남는다.1679615 이 숫자를 36으로 나눴을때 나머지는 35이다. 그럼 46655이 남는다.이를 반복..

Shift + Alt + A : 전체 주석 처리 만약에 아니라면파일 -> 기본설정 -> 바로가기키 를 누른다음comment를 치면 '블록 주석 설정/해제' 를 확인할 수 있다.
https://www.acmicpc.net/problem/2745구현문제다. 진법을 어떻게 변화시키냐 이게 문제인데 이진수와 십진수를 예로 들어보자이진수 10101 이 있다고 했을때 1 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 인 것은 알것이다. 십진수 56473 이 있다고 했을때는5 * 10^4 + 6 * 10^3 + 4 * 10^2 + 7 * 10^1 + 3 * 10^0 인것도 알것이다. 그럼 예제에 나온 ZZZZ는 어떻게 해야할까?Z가 35라고 나왔으니 위에와 똑같이 만들면1 * 35^3 + 1 * 35^2 + 1 * 35^1 + 1 * 35^0 이다. 이를 코드로 짜면 된다.string n;int b;long long sum = 0;n과 b는 입력받..