본문 바로가기

전체 글

(440)
[프로그래머스] 입양 시각 구하기(1) (ORACLE) https://school.programmers.co.kr/learn/courses/30/lessons/59412 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr GROUP BY 그리고 DATETIME 을 다룰 수 있는지 확인하는 문제 DATE_TIME의 구조는 다음과 같다. 2026-04-05 14:23:45 'YYYY-MM-DD HH24:MI:SS' 이 포맷은 TO_CAHR 형태를 사용하기 위해서는 암기가 필요한데 사실 암기라고 할 정도로 대단하지 않다.그래서 이 문제에서는 먼저 where 조건으로 09시~20시에 해당하는 것만 추출하고, 시간으로 그룹핑하면 된다. 번외로 처음에 시간만 추출되는 것을 모르고..
[프로그래머스] 그룹별 조건에 맞는 식당 목록 출력하기 (ORACLE) https://school.programmers.co.kr/learn/courses/30/lessons/131124 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이 문제의 핵심은 한 테이블에서 가장 많은 결과값을 어떻게 가져오느냐? 이다. 가장 많은 리뷰의 멤버아이디를 찾는 것이 관건인데오라클은 LIMIT 가 없기 때문에 다음과 같은 방법을 사용한다 SELECT MEMBER_ID FROM ( SELECT MEMBER_ID FROM REST_REVIEW GROUP BY MEMBER_ID ORDER..
[프로그래머스] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (ORACLE) https://school.programmers.co.kr/learn/courses/30/lessons/157339?language=oracle 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 3개의 테이블CAR_RENTAL_COMPANY_CARCAR_RENTAL_COMPANY_RENTAL_HISTORYCAR_RENTAL_COMPANY_DISCOUNT_PLAN 조인하여 푸는 문제1번 테이블이 원장테이블2번 테이블이 히스토리 테이블3번 테이블이 정보테이블이라 볼 수 있다.즉 1번 원장 테이블을 기준으로 SQL을 작성하면 될 것으로 예상할 수 있는데 문제 조건은 다음과 같다. 1. 11월 01일 ~ 11월 30일 까..
[백준] 별자리 만들기 (C++) https://www.acmicpc.net/problem/4386 좌표로 주어진 그래프를 노드그래프로 바꾼 후 크루스칼 알고리즘을 사용하면 쉽게 풀리는 문제. 다만 소수점을 주의해야한다. 크루스칼 알고리즘은 유니온 파인드와 그리디를 섞은 최소 스패닝 트리를 구할 수 있는 알고리즘이다. #include#include#include#includeusing namespace std;pair points[101];vector>> edges;bool visited[101];int par[101];int Find(int x) { if(par[x] == x) return par[x]; else return par[x] = Find(par[x]);}void Union(int x, int y){ int ..
[Opic] 오픽 후기 (난이도 3-3 강남 중국어학원) 벌써 내년 3월이 오픽 점수 만료기간이어서 이번에는 좀 더 높은 점수를 목표로 준비하고자 시험을 봤다. 나의 지난 오픽 점수는 IM2.. 솔직히 운이 엄청 좋았다. 난 영어를 개못하기 때문이다. 아무래도 삼성 공채 기간에는 점수를 잘 쳐준다는 속설이 있는데 저번에 그래서 잘나온 것 같다. 시험 장소: 강남 중국어학원이번 시험 장소는 https://naver.me/5UEcNHrc 네이버지도서울공자아카데미 강남중국어학원map.naver.com 저번엔 삼성공채 기간에 시험본거라 사람이 정~말 많았던 걸로 기억하는데 이번엔 내 파트 시간에는 사람이 그렇게 많지는 않았다. 대기공간이 넓지는 않아서 자리가 없어서 처음에 서있었다.그런데 남초딩이 옆자리에 자기 짐을 안치우고 있었더라. 바로 가서 치워달라 하고 차리..
[백준] 17609번 회문 (C++) https://www.acmicpc.net/problem/17609 회문이란?좌우대칭인 문자열을 의미한다. ABAABBA 같은 문자열이 회문이다. 해당 문제는 문자 하나까지는 봐줄 때 회문인지를 판단할 수 있는지를 물어보는 문제이다. 풀이방향1. 회문인지 파악하는 방법문자열의 시작과 끝에서 서로 비교하면서 틀린것이 없다면 회문 (시간복잡도 N) 2. 하나 생략을 하는 방법1번 로직을 진행하다가 하나만 더 진행시키면 된다. 예를들어 ABCBDA 를 하고 있었다면 B(1)와 D(5)가 다를 때, 왼족 인덱스만 1 증가 시키거나 오른쪽 인덱스만 하나 감소 시키면 된다.3. 그렇다면 이것은 같은 방식을 계속 다시 써야할 것 같다.회문파악을 계속하면서 두 값이 다를 때만 인덱스를 변화시키므로 재귀를 돌면 될 것 ..
[백준] 1459번 걷기(C++) https://www.acmicpc.net/problem/1459 오랜만에 PS를 해봤다. 꾸준히 해야되는데 일과 병행하는 것은 정말 쉽지 않다. 최소비용을 구하는 문제이다. 두가지 풀이법이 생각난다. BFS 대각선이동, 좌우이동이 가능한 BFS를 사용하면 예제는 풀릴 것이다. 그러나X와 Y는 1,000,000,000보다 작거나 같은 음이 아닌 정수이고라는 문구를 보고 BFS는 접어야함을 알 수 있다. 왜냐하면 BFS의 시간 복잡도는 행렬그래프에서는 O(M ^(N * N)) 이기 때문이다. (M은 가능한 방향) 즉 여기서는 좌우이동, 대각선이동까지 총 8방향이 가능하기 때문에 시간복잡도가 엄청나게 커진다. Greedy해당 문제는 좌우이동과 대각선의 비용이 다르다. 즉, 0,0 에서 1,1로 이동할 때..
[스프링배치] Chunk vs Tasklet (Chunk는 멀티스레딩이 아닌데 왜 빠를까?) 프로젝트를 진행하다가 Chunk는 멀티스레딩 방식이기 때문에 동시성 문제가 발생할 것이라 생각하여 Tasklet 방식으로 선회하려고 했다. 그런데 chunk방식이나 tasklet 방식이나 싱글쓰레드 방식이라고 한다. 그렇다면 왜 속도차이가 발생하는 것일까? Chunk 방식과 Tasklet 방식에 대해 먼저 살펴본다.데이터 처리 방식Chunk chunk는 spring batch의 가장 일반적인 구현방식으로 데이터를 read하여 각 “chunk”를 만들어내고 프로세스를 수행한 후 write단계에서 저장한다. 좀 더 자세히 표햔하면 위 그림과 같다. ItemRedaer에서 chunk의 크기만큼 데이터를 읽어 Read 하고 Processor 단계에서 비즈니스 로직을 처리한 후 write단계에서 저장한다.즉 ch..