본문 바로가기

전체 글

(422)
[백준 1033번] 칵테일 (C++) https://www.acmicpc.net/problem/1033 1:3, 4:7 등 여러 비율이 주어지고 결국 이어지는 길목을 똑같이 이어줘야하는 문제이다.   만약 1번 : 2번 = 4 : 72번 : 3번 = 3 : 10 이라하면 1번 : 2번 : 3번이 성립하는데 비율이 다르기 때문에 이것을 통일해줘야한다.2번이 처리해야하는 비율은 3과 7이다. 그렇다면 21로 비율을 맞출 수 있다. 21로 맞추면 1번에는 x3을 해줘야하고 10에는 x7을 해줘야한다. 그렇다면  12 : 21 : 70 이고 이것이 정답이다. 만약  2번:4번 = 5 : 3 이라면 2번은 3,5,7을 갖고있고 이것을 통일해야한다. 문제는 가장 적은 비율을 요구한다. 그러므로 최소공배수를 구해야한다는 것을 알 수 있다.  또한 문제가..
코드포스 DIV 3 첫 참가 후기 코딩테스트는 언제나 놓지 않고 가져가야하는 부분이고.. 최근 무언가 도전적이고 성취감을 얻고 싶다는 생각에 코드포스가 떠올라 무지성으로 홈페이지에 들어가봤다. 코드포스는 세계에서 가장 큰 경쟁적 프로그래밍 사이트로 백준이 슈팅, 드리블 연습장이라면 코드포스는 진짜 시합이라고 볼 수 있겠다.  (solved 랭크는 사실 의미가 없다. 성실함의 지표는 될 수 있어도 실력의 지표로는 사용하기 어렵다. 문제집 1000권을 풀었다고 공부를 잘한다고 할 수 없고 점수가 중요한 것처럼) 난 플래5로 전체적인 백준 인구수로 볼 때 중상위권으로 문제는 많이 풀어봤다고 생각이 들어 마침 DIV3 컨테스트가 열리길래 바로 신청하고 두근거리는 마음으로 (야근하고 피곤한 마음으로) 참가했다. 결과는...    7문제 중 3솔로..
[Spring Batch] 5.0 버전에서 달라진 점과 기본 예제 진행하던 프로젝트에서 공용충전기의 대한 정보 업데이트를 위해 주기적으로 공용충전기의 대한 정보를 다시 받아와야하는 작업을 진행하기 위해 스프링배치를 공부하게 되었다.Spring Batch스프링 배치는 로깅, 추적, 트랜젝션 관리, 작업처리 통계, 반복 작업 자동화 등 많은 기능을 제공하는 스프링 기능을 제공한다.스프링배치는 Job과 Step을 관리하는 기능을 제공하며 실제로 실행하는 것은 스케줄러이다.Srping Batch 5.0 에서 달라진 것들Spring Batch 5.0 Migration Guide많은 초보 개발자들이 ChatGPT와 블로그 예제를 보면서 코드를 작성할 것이다.현재 많은 스프링배치 포스팅들은 이전 버전을 사용하고 있어서 지금은 사용하지 못하는 것이 많다.@EnableBatchProc..
[백준 2138번] 전구와 스위치(C++) https://www.acmicpc.net/problem/2138 여러가지 상황을 시도하고 규칙성을 찾아내는 것이 관건인 문제이다. 관건은 서로 영향을 줄 수 있는 스위치들이 엮여있기 때문에 모든 경우의 수를 해보는 것이 가장 간단하지만 시간초과가 날 것이다. 먼저 서로 영향을 끼치는 관계를 그림으로 나타내보자  무엇을 의미하는지 잘 모르겠다..그러나 일반적으로 어떤 방식을 사용하던 스위치는 결국 켜거나 놔두게 될 것이다. 한번 1번 스위치를 켰다고 가정하자. 그렇다면 1,2번 전구가 켜졌을 것이다.   그리고 이제 2번 스위치를 켤지 말지 결정해보자. 어라? 여기서 1번을 향하고 있는 스위치가 단 한개이다..!즉 1번은 이제 내 마음대로 조절할수가 있게 되었다.  만약 목표로하는 타겟의 1번이 켜져있다..
[백준 2250번] 트리의 높이와 너비 (C++) https://www.acmicpc.net/problem/2250   문제는 이해했을 것이고 어떻게 풀어야할까  먼저 이 문제는 root가 정해져있지 않다. 부모가 없으면 그게 루트이고 들어오는 순서들도 루트부터 레벨순으로 들어오지 않음을 유의하자. 이 문제는 한번 N번 노드가 자리를 잡게 한 후 계속 갱신시켜가면 O(2^N) 이상의 시간이 걸린다. 예를 들어 처음에 root를 1번에 자리시킨다고 하자. 그리고 2번, 3번이 들어올 때 마다 자리를 옮긴다면 마지막 18, 19가 들어올 때도 최적의 자리를 위해 모든 노드를 갱신해야할 뿐더러 그것이 최적의 자리인지도 확실하지 않다. 문제의 조건을 보면 각 노드의 컬럼 사이는 비어있지 않다. 그러므로 문제를 최적의 자리를 찾는다에서 반드시 비워둬야할 자리가 ..
[백준 15824번] 얘 봄에는 캡사이신이 맛있단다 https://www.acmicpc.net/problem/15824 처음에는 DP로 생각했으나 O(N^2) 에서 시간을 더 줄이는 것이 불가능했다. 이 문제는 모든 조합을 구하는 것은 O(2^N - 1) 로 불가능하다. 가장 중요한 추론은 어떠한 조합이든 결국 최댓값과 최솟값만 알면 스코빌지수를 알 수 있는 것이다. 1, 2, 3, 4 가 있을 때1 ,2, 41, 3, 41, 4 스코빌지수는 모두 3이다.  두번째 떠올려야할 아이디어는 위처럼 꼭 모든 조합을 해봐야알 필요는 없다. 사실 이것을 생각해내기가 가장 어려운 것 같다. 당연히 조합을 먼저 구하려고 하는 것이 일반적이기 때문이다. 1, 2, 3이 있다고 하자.3은 최댓값으로 (1, 3), (2, 3), (1, 2, 3) 으로 총 3번의 최댓값이 ..
[백준 2515번] 전시장 (C++) https://www.acmicpc.net/problem/2515 문제는 직관적으로 이해하기 어렵지 않았지만 어떻게 풀어야할지 감이 잘 안오는 문제다. 하지만 N = 30만이므로 완전탐색은 불가능하고 모든 그림을 배치하고 살펴보는 DFS, BFS 방식도 불가능하다고 판단했다. Greedy 탐욕법탐욕법은 어떨까? 그림의 가격순으로 정렬하고 가격이 높은 것부터 배치하고 다음 그림을 배치할 수 있다면 배치하는 방식을 사용하면 어떨까. 그리디를 사용하기 위해서는 두가지 조건을 만족해야한다.1. 탐욕 선택 조건: 앞에서 탐욕 선택한 값이 이후의 값에 영향을 주어선 안된다.2. 최적 부분 조건: 문제에 대한 최적해가 부분문제에 대해서도 역시 최적해이다. 이 문제에서 탐욕 선택 조건에서 문제가 있다. 만약 100의 ..
[프로그래머스 SQL] 주문량이 많은 아이스크림들 조회하기 (ORACLE) https://school.programmers.co.kr/learn/courses/30/lessons/133027 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 조인하고 그룹화한다음 주문량을 모두 더해 그것으로 정렬했다. 상위 세개만 가져오기 위해 FETCH FIRST 3 ROWS ONLY 를 사용했다. 아니면 서브쿼리화 한 수 ROWNUM 을 사용한다.SELECT fh.FLAVOR FROM FIRST_HALF fh, JULY j WHERE fh.FLAVOR = j.FLAVORGROUP BY fh.FLAVORORDER BY SUM(fh.TOTAL_ORDER + j.TOTAL_ORDER) ..