
문제 설명 및 접근법 약간 확통 문제 느낌이다 x,y 기준으로 표기했을 때, (1,1) 에서 시작해서 (m, n) 까지 가능한 경우의 수 찾는 것 중간에 폭우로 길이 막힌 구간이 있는 것을 감안해서 다음과 같이 DP 적으로 접근하면 된다 DP 2차원 배열을 만들고 모두 1로 초기화, 우물 관련 처리되는 부분들은 0으로 DP[x][y] = DP[x-1][y] + DP[x][y-1] 점화식에서 어려울 것은 없고 길이 막힌 경우들을 처리해주면 된다 엣지 케이스 크게 어려움이 되는 케이스들은 다음과 같았다 왼쪽끝 (x==1) 혹은 위쪽끝(y==1) 에 물로 막힌 경우 해당 줄의 DP를 모두 0 으로 처리 코드 DP연습을 자주 합시다 눈에 딱 DP로 보여서 재귀로 접근하는 사람들은 많지 않을 텐데, 굳이 재귀로 ..

문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 문제 설명 다음과 같은 규칙에 따라 프린터를 인쇄 문제에서 원하는 번호의 인쇄 명령이 언제 출력되는지 확인하는 것 가장 앞에 있는 문서를 뽑아서, 인쇄하거나 맨 뒤에 배치 -> deque 쓰기 아주 좋다 문제 풀이 규칙에서 알려준 대로 그대로 구현해주면 된다 deque 자료구조를 사용하면 앞에서 뽑고 뒤에 추가하는 등을 자유롭게 수행할 수 있다. 한 가지..
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 문제 설명 - 각 작업의 시작 시점, 걸리는 시간이 주어짐 - 이들을 "특정 순서"로 진행하면 평균적인 대기 시간(=전체 대기 시간) 을 최소화할 수 있다. - 이때 대기 시간은 시작 시점~종료된 시점 으로 계산 - 대기 시간을 최소화해봤을 때 평균 값을 구해봐라 문제 풀이 풀이는 참 간단한데 구현에서 좀 까다롭다 우선, 풀이에서 사용할 자료구조..
문제 설명 매운 맛에 대한 배열 scoville 이 주어지고, 최소한의 매움 지수인 K가 주어진다 가장 안 매운 값 2개를 "섞어" 서 특정 값으로 바꾸는 연산이 가능하다 new = alpha + (beta *2). 이때 alpha 가 가장 작은 값, beta가 2번째로 작은 값 이렇게 "섞기"를 통해 매움 지수가 K를 넘기도록 하고, 이에 필요한 연산의 수를 구하는 것 어떻게 해도 구할 수 없다면 -1 을 결과를 출력 문제 풀이 힙(Heap) 을 사용하면 쉽게 풀어줄 수 있다. 우리가 접근해야 하는 것은 리스트 전체가 아니라 "최소값" 이므로, 이에 대해 접근하기 위한 Heap 자료구조 사용 python 에서는 heapq를 써서 쉽게 처리할 수 있다. 우선 해당 문제에서는 while 문을 돌면서 최소값..
문제 설명 - 전체 선수 목록, 완주한 선수 순으로 나옴 - 완주하지 못한 선수는 한명이 발생 - 중복의 이름이 들어올 수 있다. 문제 풀이 - set으로 접근하려고 했는데, 이름이 중복될 수 있기 때문에 그냥 dict로 처리 - 좀더 깔끔하게 처리하는 방법이 있을 것 같다. 코드 확인 def solution(participant, completion): answer = '' parti_dict = {} for parti_item in participant: if parti_dict.get(parti_item) is None: parti_dict[parti_item] = 1 else: parti_dict[parti_item] = parti_dict.get(parti_item) + 1 for comp_it..
문제 설명 - Progress List, Speed List 가 주어진다 - 각 Progress는 100이 되어야 "배포"가 가능 - Speed List는 각 Progress 별 작업 속도를 나타낸 것 - 앞의 Progress가 끝나야 뒤의 것이 같이 배포가 가능함 - 즉, 실행이 완료되는데 걸리는 시간을 미리 구해두고, 앞에서부터 순회 - 순회중일때 지금 보다 오래 걸리는게 있으면 막히는것(=막히기 전의 작업들은 뭉쳐서 배포가능하다) - 막히기 전까지 계속 합치고, 막히면 List에 추가 = 문제 풀이 - Progresses, Speeds를 Zip으로 묶어서 깔끔하게 처리 가능 - 실행이 완료되는데 걸리는 시간을 List로 구성 - div, mod 등으로 적당히 처리 - 순회하면서 막히는 구간 찾고, ..
- Total
- Today
- Yesterday
- Til
- 힙
- 삽질
- 우선순위큐
- Remote
- docker-compose update
- 이것도모르면바보
- factory_pattern
- Python
- jwt
- 위상정렬
- BOJ
- Event Sourcing
- 프로그래머스
- 백준
- vscode
- 스택
- endl을절대쓰지마
- 그리디
- 불필요한 값 무시하기
- SSL
- SQL
- requests
- 최대한 간략화하기
- django test
- Javascript
- django testcase
- cipher suite
- 파이썬
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |