본문 바로가기

전체 글40

[프로그래머스] 땅 따먹기 - Python 문제 문제 그리디를 활용하여 해결하면, 시간 초과가 발생하는 문제입니다. 따라서, dp를 활용하여 최적의 결과가 보장되도록 구현해주어야 합니다. Python def solution(land): for i in range(1,len(land)): land[i][0] += max(land[i-1][1], land[i-1][2], land[i-1][3]) land[i][1] += max(land[i-1][0], land[i-1][2], land[i-1][3]) land[i][2] += max(land[i-1][0], land[i-1][1], land[i-1][3]) land[i][3] += max(land[i-1][0], land[i-1][1], land[i-1][2]) return max(land[len(l.. 2023. 2. 27.
[Python] dictionary의 max value를 가진 여러 개의 key 찾기 개요 코딩테스트 문제를 풀며 최대값을 가지는 key 값들을 구해주어야 하는 문제가 있었습니다. 이를 해결한 방식에 대해 작성해두고 기억해두기 위해 글을 작성해보려고 합니다. 딕셔너리 key와 value가 쌍을 이루는 사전 형태의 자료형입니다. key값은 중복되지 않습니다. key를 중복으로 추가하는 경우, 마지막으로 추가한 key - value 쌍이 남게 됩니다. key에는 immutable(변경 불가) 자료형만 올 수 있습니다. 최대 value에 대한 key 찾기 max(dic_ex, key=dic_ex.get) #dictionary.get 이용 [k for k,v in dic_ex.items() if max(dic_ex.values() == v)] #리스트 컴프리헨션 이용 max() 함수는 인수에 넣.. 2023. 2. 22.
다대다(N:M) 관계를 연결 테이블로 어떻게 구현할까? 개요 팀 프로젝트를 진행하며, 다대다 관계를 설계해야 하는 상황이 발생했습니다. 다대다 관계를 적용하기 전에, 현재 프로젝트 내에서 설계해야 하는 상황을 예시로 들며 이 관계가 정말 합리적인지 알아보고 싶었습니다. 이번 포스팅을 통해, 다대다 관계가 무엇이고, 이를 활용하여 프로젝트 내에서 다대다 설계를 진행하는 것이 올바른지 공부해 보도록 하겠습니다. 현재 프로젝트 상황 현재 프로젝트 주제를 먼저 간단히 언급하고 넘어가면, 개발자 챌린지 서비스를 만들고 있습니다. 챌린저스와 같이 여러 유저가 하나의 공통된 챌린지에 참여하고, 서로 인증하는 방식의 시스템이라고 생각하시면 편할 것 같습니다. 프로젝트를 설계하며, 다대다 관계가 필요하다고 생각했던 부분은 바로 User와 Challenge 간의 관계입니다. .. 2023. 1. 17.
[프로그래머스] 2xn 타일링 - Python https://school.programmers.co.kr/learn/courses/30/lessons/12900 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 전형적인 dp 문제 였습니다. 점화식을 구해 줄 경우, 피보나치 수열과 같은 원리를 가진 dp 문제 였습니다. 점화식을 그림으로 간단히 표현해보면 아래와 같습니다. Python def solution(n): dp = [0] * 60001 dp[1] = 1 dp[2] = 2 for i in range(3, n+1): dp[i] = (dp[i-1] + dp[i-2]) % 1000000007 re.. 2023. 1. 16.
[프로그래머스] 최솟값 만들기 - Python https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 두 개의 리스트 원소들을 입력받아, 각 리스트의 요소들의 곱하여 모두 더한 값의 최솟값을 구해줘야 하는 문제였습니다. 정렬을 활용하여 해결할 수 있었습니다. Python def solution(A,B): answer = 0 A = sorted(A, reverse=True) B = sorted(B) while A: answer += A.pop() * B.pop() return answer 리스.. 2023. 1. 16.
[Spring Boot] Spring Boot + React 연동하기 개요 스프링 부트를 활용하여 API 스펙에 맞는 서버를 구축하고 있습니다. 이제, View를 구현해보려고 합니다. CSR(Client-Side Rendering) 방식과 SSR(Server-side-Rendering) 방식 중, 무엇을 사용할지 많이 고민했지만, 제목을 보신분들은 아시다 시피 CSR로 구현해보려고 합니다. 이번 포스팅에서는 첫 발걸음이 될 스프링 부트와 리액트를 연동하는 방법에 대해 알아보도록 하겠습니다. 목차 Node.js 다운로드 하기 새로운 React app 생성 연동 완료 Node.js Nodejs는 구글에 nodejs를 검색하여 안정버전을 다운로드 받으면 됩니다. 아래 나타나는 화면에서, 각자 운영체제에 맞게 다운로드 해줍니다. 이제 완전히 다운로드를 마쳤으면, 다운로드 된 No.. 2023. 1. 8.