분류 전체보기 290

[백준] 1로 만들기

https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 탑다운, 바텀업 두가지 방식으로 풀긴 했는데, 탑다운 방식으로 하니까 시간초과가 났다. max_num = 10**20 def solution(n,count): global max_num if n == 1: max_num = min(max_num,count) if n % 3 == 0: solution(n//3,count+1) if n % 2 == 0: solution(n // 2, count +1) if n > 1: solution(n-1,count+1) return max_num def solution2(n):..

알고리즘/DP 2021.11.16

[알고리즘] 퀵 소트 공부해보기

분할정복 알고리즘인 퀵 소트에 대해 공부해보았다. https://www.daleseo.com/sort-quick/ [알고리즘] 퀵 정렬 - Quick Sort (Python, Java) Engineering Blog by Dale Seo www.daleseo.com 여기에서 상상 이상으로 정리가 잘 되어있다. 기본이 있고, 최적화하는 방법이 있는데 나는 일단 기본부터 외워보기로 했다. 의외로 구현이 간단해서 놀라웠다. 금방 외울 수 있었다. def qsort(arr): if len(arr) arr[i]: l.append(arr[i]) elif mid < arr[i]: r.append(arr[i]) else: e.append(arr[i]) return qsort(l) + e + qsort(r) print(..

알고리즘 2021.11.13

[알고리즘] DP 공부해보기

동적 계획법이라는 것에 대해 공부해보는 시간을 가졌습니다. '완전탐색 < DP' 라고 합니다. 문제를 쪼개고, 작은 단위의 답을 구하고, 그걸 바탕으로 더 큰 문제의 답을 구하는 과정을 반복하는 방법입니다. 오늘은 맛보기로 DP의 대표작인 피보나치 수열에 대해 간단하게 알아보았습니다. # recursive def f(n): if n < 2: return n return f(n-1) + f(n-2) # top - down cache = [-1] * 37 def f2(n): if cache[n] != -1: return cache[n] cache[n] = n if n < 2 else f2(n-1) + f2(n-2) return cache[n] # bottom - up fibo = [-1] * 37 def f..

알고리즘/DP 2021.11.10

[프로그래머스] N-Queen 문제

문제 설명 가로, 세로 길이가 n인 정사각형으로된 체스판이 있습니다. 체스판 위의 n개의 퀸이 서로를 공격할 수 없도록 배치하고 싶습니다. 예를 들어서 n이 4인경우 다음과 같이 퀸을 배치하면 n개의 퀸은 서로를 한번에 공격 할 수 없습니다. 체스판의 가로 세로의 세로의 길이 n이 매개변수로 주어질 때, n개의 퀸이 조건에 만족 하도록 배치할 수 있는 방법의 수를 return하는 solution함수를 완성해주세요. 제한사항 퀸(Queen)은 가로, 세로, 대각선으로 이동할 수 있습니다. n은 12이하의 자연수 입니다. 입출력 예 nresult 4 2 입출력 예 설명 입출력 예 #1 문제의 예시와 같습니다. 오답노트 안되는 문제는 그냥 외워라! 그러면 이해하게 될 것이다! 는 말은 진리인 것 같다. 처음에..

[프로그래머스] 가장 긴 펠린드롬

문제 설명 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합니다. 제한사항 문자열 s의 길이 : 2,500 이하의 자연수 문자열 s는 알파벳 소문자로만 구성 입출력 예 sanswer "abcdcba" 7 "abacde" 3 입출력 예 설명 입출력 예 #1 4번째자리 'd'를 기준으로 문자열 s 전체가 팰린드롬이 되므로 7을 return합니다. 입출력 예 #2 2번째자리 'b'를 기준으로 "aba"가 팰린드롬이 되므로 3을 retu..

알고리즘 2021.11.08

34. [JPA] 02. JPA 시작

계속 이어서 강의 듣는 중입니다. 내용 JPA 실습 환경 구성 jpa를 실습하기 위한 환경을 구성하는 파트입니다. 강의에서는 다음과 같은 구성환경을 따르도록 권고하였습니다. h2 설치 메이븐 자바8 이상 persistence.xml 설정 저는 따로 persistence.xml을 설정해주지 않았습니다. 자바 스프링 부트에서는 starter-data-jpa를 로드하면 별도의 persistence.xml을 사용할 필요가 없기 때문입니다. 출처: https://wedul.site/511 [wedul] 데이터베이스 방언 JPA는 특정 데이터베이스에 종속되지 않습니다. 방언을 설정해주면, 그 방언을 기본으로 만들어서 SQL을 생성하는 방식입니다. application.properties에 설정해주면 됩니다. dri..

Dev/SpringBoot 2021.11.07

33. [JPA] 01. JPA 소개

김영한님의 JPA 강의를 듣고 정리해보는 시간을 가졌습니다. 내용 객체를 자바 컬렉션에 저장하듯이 DB에 저장할 수는 없을까? 고민하다가 나온 것이 JPA라고 합니다. JPA(Java Persistence API) ORM 기술의 표준이라고 합니다. 인터페이스의 모음입니다. (하이버네이트, EclipseLink, DataNucleus 등) ORM(Object Relational Mapping) 객체 관계 매핑입니다. 객체 - ORM - DB 사이에서 매핑해주는 기술입니다. 패러다임 불일치를 해결해준다고 합니다. 왜 JPA를 써야하는가? 객체 중심의 개발 생산성 CRUD가 쉽다. 유지보수 JPA에서는 필드만 추가하면 SQL은 JPA가 알아서 생성 후 처리한다. 패러다임 불일치 문제 해결 성능최적화 1차 캐시..

Dev/SpringBoot 2021.11.07

카카오 경력 코딩테스트 후기

안녕하세요. 이번에 카카오 경력직 코딩테스트 본 후기를 기록해두고자 합니다. 저 나름 의미있는 도전이었고, 코딩테스트를 치루기 전 알아야할 마음가짐이나, 느꼈던 감정들을 기록해보려고 합니다. 메일은 다음과 같이 왔습니다. 코딩테스트를 일주일 내로 바로 풀어야했는데, hackerrank 라는 곳에서 풀도록 되어있었습니다. 회원가입만 해놓고 그동안 풀지 않았었는데, 합격 메일을 받고나서 부랴부랴 풀기 시작했었네요. 준비기간은 4일정도였습니다. 개인적으로 코딩테스트를 치루며 느낀 점은 아래의 세가지와 같았습니다. 해커랭크 플랫폼에 익숙해 질 것. 자료구조 공부 잘할 것. 어떻게 풀지 방향 생각하고 풀 것. 특히, 떠오르는 키워드들이 있을 텐데, 이에 대해 충분히 생각하고 풀어보시는 것을 추천드립니다. 저는 바..

코딩테스트 떨어졌을 때 봐야하는 글

안녕하세요. 이번에는 열심히 준비한 시험에 떨어졌을 때 어떻게 맨탈 관리를 해야하는지 제 자신에게 알려주려고 합니다. 나중에 더 큰 시련이 왔을 때, 열심히 준비한 시험에 떨어졌을 때 이 글을 보며 마음을 다잡기 위해 기록해두려 합니다. 실패에 관하여 실패의 정의를 다시 내려야합니다. 실패는 패배가 아니라, 합격으로 더 한발짝 내딛은 것입니다. 즉, 결과가 아닌 과정인 것입니다. 끝이 아니기에 그냥 계속 걸어나아가면 되는 것입니다. 다만, 실패라는 이벤트를 겪으며 무조건 배워야 할 것이 있습니다. if 실패: 기존의 방법이 잘못되었으니 돌아보기 부족한 부분을 더 메울 수 있는 자기 진단과 방법 세우기 감으로 막연히 행동하지 말기 셀프 모의고사로 모르는 부분을 정확히 인지하기 적용해보기 기존의 방법이 잘못..