일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- piplining
- JPA
- 구현
- 객체지향패러다임
- BFS
- 카카오
- 프로그래머스
- 검색어 추천
- docker
- 숫자 블록
- branch 전략
- spring event
- 이분탐색
- 누적합
- gRPC
- 결제서비스
- 알람 시스템
- 디버깅
- 주식
- 셀러리
- 깊게 생각해보기
- 레디스 동시성
- 좋은 코드 나쁜 코드
- prg 패턴
- AWS
- 백준
- 쿠키
- 트랜잭샨
- jwt 표준
- 완전탐색
- Today
- Total
목록분류 전체보기 (167)
코딩관계론
문제 이해하기조교들이 새로운 보안 시스템을 설치하기로 했습니다. 이 시스템은 알파벳 소문자로 이루어진 암호를 사용하며, 최소 한 개의 모음과 최소 두 개의 자음이 포함되어야 합니다. 또한 알파벳은 증가하는 순서로 배열되어야 합니다. 주어진 C개의 문자로 가능성 있는 암호를 구하는 프로그램을 작성해야 합니다. 문제 해결 방법 설명하기1. 모든 알파벳을 조합해야 합니다.아래의 코드를 사용하면 모든 조합을 구할 수 있습니다.def possible_passwords(length, num_chars, characters): results = [] combinations_list = list(combinations(characters, length)) 2. 조건검사만들어진 문자열 조합에서 모음과 자음의..
문제 이해하기주어진 쿼리가 있고, 그 중에 몇 개의 월드가 매칭되는지 찾는 문제였다.참고로 필자는 틀렸고, 어떤 접근 방법을 통해서 틀렸는지 설명하고 풀이법을 설명하겠다.틀린 문제 해결 접근 과정1. 경우의 수 검색하기문제의 경우의 수를 보면 주어진 word의 길이는 100,000이고 word[x]의 길이는 최대 10,000이 된다.따라서 word를 하나씩 분리하면 해결이 가능하지 않을까 싶었다. 왜냐하면 분리에 N*M의 경우의 수만 사용하면 됐기 때문이다예시f????fr???fro??frod?????o???do.....????? 그 후 분리된 값들을 아래와 같은 방식으로 캐시에 저장하고 쿼리 배열 탐색을 cache에 찾아서 꺼내는 방식이었다.cache['fr???] += 1하지만 효율성4, 5에서 시간..
개요HTML form 데이터를 이용해서 게시판 글쓰기나 주문 전송을 하기 위해선 post 메소드를 이용해야 한다. 이런 post 메소드 요청을 수행한 후 브라우저를 새로고침 하면 해당 요청이 계속적으로 실행되어 서버에 중복으로 정보가 저장되는 경우가 발생하게 된다,오류 해결 시도먼저 이 오류가 발생하는 원인은 새로고침에 의해서 발생한다.인터넷 브라우저를 새로고침 하면 일반적으로 브라우저는 현재 페이지를 다시 로드하고, 이전에 사용자가 마지막으로 했던 행동을 다시 수행하게 됩니다. 따라서 이전에 보냈던 POST 요청을 다시 수행하게 됨으로 서버에는 중복된 데이터가 남아있게 된다. 이를 해결하기 위해서 PRG(Post -> Redirect -> Get)이란 패턴이 있다.POST요청 후 응답을 301로 하면서..
문제 이해하기n이 주어지면 그 중에 올바른 괄호쌍이 몇 개 있을 수 있는지 찾는 문제였다.올바른 괄호쌍이란 ()()()와 같이 모두 닫친 괄호를 의미한다.문제 해결 방법 설명하기1.가지치기n이 28(14 * 2)이기 때문에 완전탐색은 제한시간 내에 풀 수 없다. 따라서 시간을 줄이기 위해서 DP를 선택하던가 탐색하지 않아도 실패하는 경우를 발견해서 탐색을 줄여야 한다. 필자는 가지치기를 선택했고, 그 조건에 탐색 시점에서 남은 '(' 의 개수가 남은 ')'의 개수보다 많다면 탐색을 멈추도록 했다. 왜냐하면 닫친 괄호가 더 적게 남았다면 '(())))" 다음과 같은 상황이기 때문이다. if left_bracket > right_bracket: return 0 2. 완전탐색또한 항상 남..
문제 이해하기이동하는 방향이 담긴 배열이 주어질 때, 방의 갯수를 return하는 문제였습니다. 문제 해결 방법 설명하기1. 닫친 방이란?닫친 방을 생각해본다면 이미 방문한 정점에 다시 한번 방문 했을 때 닫친 방이라고 생각할 수 있다.하지만 주의할 점은 다시 방문한 정점은 이전에 사용되지 않은 edge로 부터 진입해야 한다는 점이다. 2. 배열의 확장 배열의 확장은 왜 필요한가.4각형 배열이기 때문에 중간 정점은 생각하지 못하게 된다.따라서 배열의 확장을 통해 중간 정점을 표현할 수 있게 만들어줘야 닫친 방을 모두 찾을 수 있게 된다. 코드from collections import dequedef solution(arrows): answer = 0 visited = {} dir = {}..
문제 이해하기삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 하시오. https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제 해결 방법 설명하기1. 최대값을 찾는 방법최대값이 되는 경로를 찾기 위해서는 모든 가능한 경로를 탐색해야 합니다. 그러나 모든 경로를 매번 계산하려고 하면 제한된 시간 내에 문제를 해결할 수 없습니다. 따라서 이전에 저장한 정보를 활용하는 방법이 필요합니다. 제가 선..
문제 이해하기부분 펄스가 있는데 해당 부분 펄스를 적용하고 나서 가장 큰 합을 가지는 부분 수열의 값을 찾는 문제였다. https://school.programmers.co.kr/learn/courses/30/lessons/161988 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 해결 방법 설명하기 1. 가장 큰 부분 수열이 되려면?가장 큰 부분 수열을 찾기 위해서 크게 두 가지 방법이 있다. 하나는 이중 for문을 이용해서 가장 큰 값을 갖는 부분 수열을 찾을 수 있을 것이다. 하지만 sequence 배열의 길이를 보면 해당 방법은 불가능하다. 따라..
문제 이해하기케이크를 잘라서 토핑을 공평하게 나눌 수 있는 가짓수 방법을 찾는 문제였다. 문제 해결 방법 설명하기1. 케이크를 나누기 전 토핑의 가짓수를 계산합니다 for i in topping: if not i in topping_right.keys(): topping_right[i] = 1 else: topping_right[i] += 1 2.토핑을 하나씩 제거하면서 공평하게 나눠지는지를 계산합니다. for i in topping: if len(topping_left.keys()) == len(topping_right.keys()): answer += 1 if ..
문제 이해하기 숫자로 이루어진 문자열 numbers가 주어졌을 때 최소한의 시간으로 타이핑을 하는 경우의 가중치 합을 return 하도록 solution 함수를 완성해주세요문제 해결 방법 설명하기1. 경우의 수 계산하기일단 숫자의 Length가 100,000이기 때문에 완전탐색으 진행한다면 2^100,000이 되니깐 제한시간안에 풀기는 불가능하다.따라서 다른 접근 법이 필요했다. 2. 그리디인가?다른 접근 법 중 처음 생각난 것은 그리디였다. 왜냐하면 왼손과 오른손 중에 다음 칸에 도달할 수 있는 가장 빠른 경로를 구하면 최적의 답이라고 생각했지만 다음과 같은 경우에는 최적의 답을 찾을 수 없게 된다."왼쪽 손이 4번 칸에 위치하고, 오른쪽손이 6번 칸에 위치했을 때 5번 칸으로 이동하려면 어떤 손을 선..
문제 이해하기어떤 왕국에사 새로운 도시를 건설하기 위해선 금과 은이 필요하다.왕은 새로운 도시를 건설하기 위해서 기존 도시에서 금과 은을 가지고 오려고 하고, 이 광물이 새로운 도시에 도착하기 까지 일정 시간이 소요된다.새로운 왕국에 필요한 금과 은이 배달되기 까지의 시간을 구하라. https://school.programmers.co.kr/learn/courses/30/lessons/86053 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 해결 방법 설명하기 1. 경우의 수 계산하기 왕국 내에 존재할 수 있는 도시의 최대..
문제 이해하기 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 계산하는 문제였다. 단 모든 예산을 지원해야 한다.문제 해결 방법 설명하기1. 경우의 수 계산하기 문제를 풀기 위해서 먼저 경우의 수를 계산해야 하는데 부서별 지원여부를 두고 경우의 수를 계산하면 2(해당 부서의 지원 여부 O or x)^100(부서의 개수)가 나오게 되고, 제한시간안에 문제를 해결할 수 없다. 따라서 완전 탐색은 사용할 수 없게 된다. 최대한 많은 부서에 예산을 지원하면 되기 때문에 예산 요청이 작은 순으로 지원하면 된다. 따라서 그리디하게 지원하면 문제를 해결할 수 있다. 코드def solution(d, budget): ..
문제 이해하기 등굣길 경로의 경우의 수를 구하는 문제이다. 좌표 (1,1)인 집에서 부터 (m,n)인 학교까지 가는 경로를 구하는 문제인데 사이에 웅덩이를 피해 가야한다. 경우의 수를 계산해보면 200!/(100! * 100!)이 된다. 매우 큰 수이기 때문에 완전탐색으로는 제한시간안에 답을 찾을 수 없다. https://m.blog.naver.com/parkhc1992/220669287080 [확률과 통계] 최단거리 경우의수 중2때 배운적이 있을거에요. 최단거리 경우의수 구하는 문제 예를 들면 이런 그림 하나주고 점A에서 점B... blog.naver.com 문제 해결 방법 설명하기 1. 최단거리 구하는 수 계산하기 최단 거리를 구하는 경우의 수는 아래의 그림과 같다. 이를 코드로 구현하면 아래와 같다..