일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- msSQL
- 기술면접
- BOJ
- Docker
- 오퍼레터
- BFS
- 연결요소
- compose
- 6987
- 경력
- 백준
- 처우산정
- 이분탐색
- 소프티어
- 13908
- @P0
- softeer
- 성적평가
- 물채우기
- OFFSET
- 처우협의
- Kafka
- boj #19237 #어른 상어
- 파라메트릭
- 백트래킹
- dfs
- upper_bound
- incr
- 매개변수탐색
- 퇴사통보
- Today
- Total
목록알고리즘 문제 (501)
기술 블로그
https://www.acmicpc.net/problem/1342 next_permutation()을 활용하면 된다. 물론 정렬된 상태여야만 한다. 또한, 정렬된 상태도 검사해야하므로, do while문으로 해야한다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include #include #include #include #include #include #include #include #include #include #include #include #include #pragma warning(disable:4996) #pragma comment(linker, "/STACK:336777216"..
https://www.acmicpc.net/problem/15663 중복을 제거 → exist 배열 활용 각 숫자들에 대한 배열을 활용 → num[n]→ num 배열. 이 때, 인덱스(n)가 그 숫자이다. 배열 값 자체는 n이 몇 번 등장했는지 기록. 그리고 MIN부터 MAX까지 백트래킹하면 된다.(오름차순 때문에 작은 숫자부터 큰 숫자까지 for문) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374#include #include #include #include #include #include #includ..
https://www.acmicpc.net/problem/17135 계속 제출해봐도 틀렸습니다가 뜨길래, 뭐가 문제인가 했었다. 생각해보니 내가 처음에 문제에 접근하였을 때는 문제 조건의 같은 적이 여러 궁수에게 공격당할 수 있다라는 조건을 읽고, '최대'로 죽일 수 있는 적이라면, 당연히 1:1로 적을 죽여야 최댓값이 나올 수 있으니, 무시해도 되겠지라는 생각으로 구현했었다. 즉, 죽인 적을 즉시 0으로 바꿔주고, 다음 궁수가 무조건 다른 적을 죽일 수 있도록 구현하였었다. 그래서 위의 조건을 있는 그대로 그냥 받아드려서, 구현하고 제출하였더니 맞았다. 참고) 난 아래처럼, 죽일 적을 저장하고있었는데 123456if (dist
https://www.acmicpc.net/problem/3184 난이도는 매우 쉬웠다. 문제 유형은 BFS로 되어있길래 BFS보다는 DFS가 더 시간 줄일 수 있을 것 같아서 DFS로 풀었다. 처음에 60번 째 줄을 if(!visit[i][j] && Map[i][j] == '.') 라고 작성했었는데 바로 생각해보니 3 3.#o.#v.## 라는 반례가 있었다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#include #include #include #include #include #include #inc..
https://www.acmicpc.net/problem/17128 처음에 2중 for문으로 한 번 제출해봤는데 역시나 200,000라서 시간 초과가 떴다. 시간 초과 후 2중 for문을 안 쓰려고 했다. 예제를 활용하여 풀었다. 핵심은 vector와 배열의 인덱스를 활용하는 것이다. total 변수도 활용한다. 숫자는 배열의 인덱스sum A 1 1 2 3 4 2 2 3 4 5 3 3 4 5 6 4 4 5 6 7 5 5 6 7 8 6 6 7 8 1 7 7 8 1 2 8 8 12 3 4 숫자는 인덱스떼어낼 인덱스(A 배열) 떼어낼 인덱스를 포함하는 sum 배열 1 1 6 7 8 2 2 1 8 7 3 3 2 1 8 4 4 3 2 1 5 5 4 3 2 규칙 : 떼어낼 인덱스를 k라고 하면, k--씩 감소하여 ..
https://www.acmicpc.net/problem/17127 예제 172 5 3 1 4 2 3 2 + 5 + 3 + (1 * 4 * 2 * 3) index= 0 1 2 3 4 5 6vector vc = {2, 5, 3, 1, 4, 2, 3}; '+'로 활용하려 할 때만, true가 되고, index를 활용한다. use[0] = true;use[1] = true;use[2] = true; 가 되어버리고,(덧셈이므로 add 변수에 저장) 나머지는 곱셈이다.(mul 변수에 저장) 주의할 점은 곱셈은 '연속'으로 나와야한다. 덧셈은 무조건 3개가 되어야 하고 곱셈은 전체(=N) - 3개가 되어야 한다. 곱셈의 개수(used[i]가 false인 것의 개수)가 N - 3개가 아니면 return 해버린다. 정..
https://www.acmicpc.net/problem/16932 저번에 푼 코드 : https://hsdevelopment.tistory.com/254 공부하기 좋고, 복습하기 좋은 DFS 문제여서 다시 풀어봤다.다시 또 풀어볼 생각이다. 저번에 푼 코드에서는 필요 없는 함수, 변수들이 있었다. 또한, 다시 풀었음에도 불구하고, group 배열 크기를 1010으로 했었다. 연결 요소의 개수는 1010 * 1010 크기의 배열에서 1010 이상일 수 있기 때문이다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717..
https://www.acmicpc.net/problem/2920 배열의 인덱스를 활용한 풀이 코드가 있어서 올려본다. 나는 vector로 저장해 while()으로 오름차순, 내림차순 순서대로 검사하여 중간에 맞으면 return 0; 하였다. 12345678910111213141516171819202122232425262728293031323334353637#include #include #include #include #include #include #include #include #include #include #include #include #include #pragma warning(disable:4996) #pragma comment(linker, "/STACK:336777216") using ..