분류 전체보기

· Diary
오늘도 퇴근하고 알고리즘 문제를 풀다가 글또 신규 기수 모집에 대한 메일을 받았고, 신청을 하기 위해 답변들을 작성하다 삶의 지도라는 항목을 발견했습니다.  시간이 늦어서 아침에 일어나 작성할까 했지만, 자신의 삶을 돌아보기에는 감성이 넘치는 저녁 시간대가 가장 좋다고 생각이 들었기 때문에 지금부터 저도 아직 잘 알지 못하는 제 자신을 돌아보겠습니다!  나는 어떤 사람일까? 제 좌우명은 '남에게 피해 주지 않고 누구보다 게으르게 살자'입니다. 평생을 공부해야 하는 개발자라는 직업을 하기에는 어울리지 않다고 볼 수도 있습니다. 학창 시절에도 공부를 열심히 한 것도 아니고, 그렇다고 노는 것을 제대로 논 것도 아닌 남들에게 피해 주지 않는 선에서 제 스스로의 일에는 한없이 게으르게 살아왔습니다. 첫 프로젝트..
· Diary
드디어 스트릭 300대 진입...! 요즘은 정신이 없어서 매일 출근해서나 아니면 퇴근하고 마라톤만 한 문제씩 풀고 있는데랜덤이다보니 백준에서 가장 많은 문제를 보유한 수학 태그들이 자주 나와서 머리가 아프다 수학이 약해서 정수론, 기하학 이런 태그 붙은 문제들 나오면 해당 문제들은 그냥 넘겨버렸는데최근에 톱니바퀴를 눌러보니 마라톤 문제 리셋 기능이 추가되어 있었다... 수학도 언젠간 공부해야하지만 지금은 다른거 공부하기도 바쁘기 때문에 일단은 돌리고나중에 여유가 생기면 다시 공부를 해서 밀어두었던 수학 문제 폭탄들을 감당하는걸로...
문제 접근 방식처음에는 이름이랑 그림만 보고 트리 문제인가 했는데 읽고서 그림을 그려보다 보니 DP 문제에 가까워 보였다. 근데 막상 DP를 사용해서 풀지도 않았고 이게 왜 티어를 골드 4까지나 준건지 모르겠는 문제인데, 규칙만 찾으면 코드 몇 줄로도 간단하게 풀 수 있다. 아래에서부터 왼중오 3개의 노드를 하나의 차로 방문하는 것이 가장 적은 차를 사용하는 경우이고, 주어진 입력내 트리의 노드 수가 long의 범위를 벗어나지 않기 때문에 DP를 사용하지 않고도 단순 연산으로도 풀 수 있다. 풀이public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReade..
· Diary
이번에 새로운 시즌이 종료되면서 랜덤 마라톤이라는 시스템이 추가되었는데자신의 현재 티어에 맞게 완전히 랜덤으로 문제를 추천해준다. 기존에는 포인트 획득 경로가 매일 첫 문제 75점과 문제당 25점이라 모으기 쉽지 않았지만이번 마라톤 시스템은 포인트 보상을 달달하게 챙겨줘서 포인트 모으기가 수월해졌다. 언어 설정이 있는줄 모르고 일본어랑 영어 문제들을 번역기 써가며 다 풀고 보니작은 톱니바퀴 아이콘을 오늘에서야 봤다... 영어는 익숙해져서 나쁠게 없으니 다음 코스부턴 일본어만 제외하고 문제를 풀어봐야겠다. 사실 그래프, 백트래킹, 해쉬 같은 문제들만 좋아해서 그리디, DP 같은 것들에 약하긴 했는데매일 스트릭 유지도 하고 알고리즘 편식도 고칠겸 매주 완주를 목표로 해야겠다.
QClass// import static com.~.~.~.~.QCustomer.*;QCustomer customer = QCustomer.customer;QCustomer customer = new QCustomer("myCustomer"); 실제 도메인 클래스의 질의 타입으로 정적으로 사용하거나 별칭을 붙여 사용할 수 있다. 쿼리 사용해 보기JPAQuery query = new JPAQuery(entityManager);HibernateQuery query = new HibernateQuery(session); JPA와 Hibernate API를 모두 지원하기 때문에 위와 같이 둘 다 사용 가능하고두 클래스 모두 JPQLQuery 인터페이스의 구현체다.QCustomer customer = QCusto..
문제  접근 방식인접 리스트를 만든 후에 일반적인 그래프 탐색으로 여행 경로를 모두 이동해보면시간 초과가 발생하기 때문에 여행 경로가 모두 한 사이클에 포함 되는지만 파악하면 된다. 이럴 때 효율적인 알고리즘이 유니온 파인드인데유니온 함수를 이용해 연결된 정점들끼리의 부모를 기록해두고파인드 함수를 이용해 서로의 최고 조상이 누구인지 확인하여같은 사이클에 존재하는지 여부를 빠르게 판단할 수 있다. 초기에는 각 도시마다 자기 자신을 부모로 초기화하고주어진 도시 간의 경로를 유니온 함수로 연결한 후에여행 경로대로 파인드 함수를 사용해 모두 하나의 사이클에 포함되는지 확인한다. 풀이public class Main { static int[] parent; public static void main(String[]..
문제  접근 방식그래프 문제도 아니고 그냥 일반적인 반복문 문제라입력 받고 8방향 중 한 방향으로 4개의 알파벳들이 각각 O B I S인지 모두 확인해주면 된다. 문자 배열을 미리 만들어두고 비교를 했는데 목표 단어에 중복된 문자가 존재하지 않아서애초에 M을 1, O를 2, ..., S를 5로 두고 증가하는 순으로 비교하면 더 깔끔할거 같다. 풀이public class Main { static int n, cnt = 0; static char[] chars = new char[]{'O', 'B', 'I', 'S'}; static char[][] map; static int[] dx = {-1, -1, -1, 0, 0, 1, 1, 1}; static int[] dy = {-1, 0, 1, -1, 1, -1..
· Back-End
개요우선 처음 사용해보고 느낀 점은 초기 셋팅할 때 햇갈린거만 빼면 생각보다 어렵지 않다는 것이다. 워낙 유명한 툴이다 보니 인터넷에 정보도 많고 다양한 플러그인과 GUI 덕분에 처음 사용해보는 사용자도어려움 없이 사용할 수 있는거 같다. 물론 어느 정도 스크립트를 작성하긴 해야한다. 아마 이전에 Github Actions를 사용해본 사람이라면 스크립트를 짜는 것이 어렵진 않을거다. CI/CD Pipeline당장은 EC2 인스턴스는 Jenkins 서버용과 SpringBoot 서버용으로 두 개만 사용 중이고프로젝트가 어느 정도 완성되어 가면 추후에 아키텍처를 수정할 생각이다. Jenkins는 도커를 사용해 환경을 구성하는게 편해 해당 방식을 사용했고이후에 도커 이미지 빌드와 푸쉬를 위해 Docker를 사용..
da9dac
'분류 전체보기' 카테고리의 글 목록