일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- msSQL
- upper_bound
- 처우산정
- 백준
- 오퍼레터
- BOJ
- dfs
- 이분탐색
- 연결요소
- compose
- 처우협의
- 퇴사통보
- 6987
- 매개변수탐색
- 파라메트릭
- 백트래킹
- @P0
- Kafka
- boj #19237 #어른 상어
- 물채우기
- 13908
- 소프티어
- incr
- 기술면접
- Docker
- BFS
- 성적평가
- softeer
- 경력
- OFFSET
- Today
- Total
목록전체 글 (631)
기술 블로그
특정 열을 활용하여 중복된 행(데이터) 찾기 SELECT [열 이름 A] FROM [테이블 이름] GROUP BY [열 이름 A] HAVING COUNT([열 이름 A]) > 1;
해당 연도의 일 수와 like 사용에 좋은 'yyyyMM%' 문자열 얻기 @START_DATE 2021-01-01 00:00:00.000 @END_DATE 2021-12-31 00:00:00.000 @DAY_DIFF 365 @MONTH_AGO_YYYYMM_LIKE 202101% DECLARE @MONTH_DAY_COUNT INT, @MONTH_AGO DATETIME, @MONTH_AGO_YYYYMM_LIKE VARCHAR(100) DECLARE @START_DATE DATETIME, @END_DATE DATETIME, @DAY_DIFF INT DECLARE @PIVOT_DATE DATETIME -- yyyy-MM-01 형식으로 입력하여, 해당 연도의 일 수와 -- like에 사용하기에 좋은 yyyyMM%..
※ 아래 문제도 풀어보자.(회의실 개수 최댓값 구하기) https://www.acmicpc.net/problem/1931 https://www.acmicpc.net/problem/11000 강의실 개수 최솟값을 구하는 문제이다. 시작시간 기준으로 오름차순 정렬한다. 우선순위 큐를 활용하여, 종료시간을 넣어주면서 시작시간을 활용한다. #include using namespace std; int N; vector v; int main() { //freopen("C:\\Users\\park7\\Desktop\\lazy_bronze\\2.in", "r", stdin); cin.tie(0); scanf("%d", &N); int S, T; for (int i = 0; i < N; i++) { scanf("%d %..
https://hsdevelopment.tistory.com/772 배열이 주어지고, 배열의 구간에 수를 더하고 빼는 쿼리가 있다. 세그먼트 트리를 이용해도 되지만, 우리는 연산 중간에 배열의 값을 알 필요가 없고, 모든 쿼리(연산) 이후에 마지막 단 한 번만 구하면 되기 때문에, 누적합을 이용할 수 있다.

※ 이 문제는 1차원 배열에 대한 문제이고, 2차원 배열로 확장시킨 문제가 2021년 9월 11일 토요일 2022 카카오 블라인드 코딩테스트 6번에 출제됐다. ※ 이 글은 안즈님의 카카오 6번 문제 해설(누적합을 이용한 연산)을 참고하여 작성하였고, 제가 다시 편히 보기 위해 정리하였습니다. https://www.acmicpc.net/problem/19951 배열이 주어지고, 배열의 구간에 수를 더하고 빼는 쿼리가 있다. 세그먼트 트리를 이용해도 되지만, 우리는 연산 중간에 배열의 값을 알 필요가 없고, 모든 쿼리(연산) 이후에 마지막 단 한 번만 구하면 되기 때문에, 누적합을 이용할 수 있다. 문제에 대한 정답 코드는 맨 아래에 있다. 이 문제를 풀기 위한 누적합 연산 개념 설명(아래 사진)을 추가한다..

https://www.acmicpc.net/problem/1113 핵심은 높이를 2부터 입력된 최대 높이까지 각각 하나씩 채워주는 것이다. main() 함수 내의 for문 h의 의미는 "h보다 작은 곳을 찾아 높이를 딱 h까지 채우겠다."라는 의미로 해석하면 된다. 또한, dfs가 수행될 때, 바깥 쪽(행과 열이 0 또는 R - 1 또는 C - 1)일 때는 바깥 쪽으로 흘러내리므로, 이때는 답 구하는 연산에 셈하지 않는다.(bool형 변수인 stop 활용하였음) 1. 입력된 값들 중 최댓값 구하기(최대 높이 = H) 2. 2 ~ H 각각 수행 → h 3. h보다 미만인 곳을 찾아 vector에 넣어준다. 4. vector를 활용하여, dfs 수행 5. 바깥 쪽일 경우 답 구하는 연산에서 제외 6. 바깥 ..
https://www.acmicpc.net/problem/2665 처음에는 단순 queue로 구현했다가, 예제 1번의 답이 계속 5로 나왔다. 문제를 잘 읽어보면 검은 방에서 흰 방으로 바꾸어야 할 최소의 수를 구하는 프로그램을 작성하시오. 라고 쓰여있는데, 이는 '검은 방'은 최대한 피해서 가야한다는 의미이다. 즉, 검은 방과 흰 방 중 우선순위가 더 높은 방은 흰 방이다. 이 부분에서 힌트를 얻어, queue말고 deque로 구현한다. 다음에 이동할 방이 검은 방 → deque의 맨 뒤(우선순위가 낮으므로) 다음에 이동할 방이 흰 방 → deque의 맨 앞(우선순위가 높으므로) #include using namespace std; #define MAX 55 int n, m[MAX][MAX]; int ..
https://www.acmicpc.net/problem/2810 핵심은 제일 끝 쪽(오른 쪽 끝)에 있는 사람은 오른쪽부터 먹는다. 그 이후이 사람은 왼쪽을 먹는다. "S"와 "LL" 파싱 없이 할 수 있을 것 같은데 그냥 파싱해봄 #include using namespace std; int n; string s; int main() { //freopen("C:\\Users\\park7\\Desktop\\lazy_bronze\\2.in", "r", stdin); cin.tie(0); cin >> n >> s; int len = s.length(); string ps = ""; vector v; // "S"와 "LL"을 파싱하여 vector v에 담음. for (int i = len - 1; i >= 0..