11404
편집 시간: 2022년 2월 24일 오후 2:39 코드 11404번: 플로이드 풀이 정석적인 플로이드 워셜 알고리즘 문제다.
편집 시간: 2022년 2월 24일 오후 2:39 코드 11404번: 플로이드 풀이 정석적인 플로이드 워셜 알고리즘 문제다.
편집 시간: 2022년 2월 9일 오후 6:23 코드 Algorithm/11399.py at main · Junroot/Algorithm 풀이 최소값을 구하기 위해서는 작은 수 순서대로 큰 수에 곱해져야된다. 증명은 따로 하지 않겠다.
편집 시간: 2022년 2월 12일 오후 9:43 코드 Algorithm/11279.py at main · Junroot/Algorithm 풀이 1927 와 풀이가 같다.
오답 여부: o 편집 시간: 2022년 3월 14일 오후 1:21 코드 Algorithm/11053.py at main · Junroot/Algorithm Algorithm/11053-2.py at main · Junroot/Algorithm 풀이 느린 풀이 처음에는 함수 f(index, current_number)를 만들어 점화식을 만들었다. f(index, current_number): 수열 A의 index부터 n - 1번째 까지 중에서 current_number보다 큰 수들로 이루어진 부분 수열의 최대 길이 a[index] > current_number 인 경우: f(index, current_number) = max( 1 + f(index+1, a[index]), f(index+1, current_number) ) a[index] ≤ current_number 인 경우: f(index, current_number = f(index+1, current_number)...
편집 시간: 2022년 2월 7일 오후 8:48 코드 Algorithm/11050.py at main · Junroot/Algorithm 풀이 팩토리얼을 계산하는 함수를 만들면된다. 중복되는 팩토리얼 계산이 있어서 dp를 사용했다.
오답 여부: o 편집 시간: 2022년 3월 28일 오후 3:55 코드 Algorithm/11049.py at main · Junroot/Algorithm 풀이 잘못된 풀이 i번째에서 j번째 행렬 연산의 최소값은 (i번째에서 j-1번째 행렬 연산의 최소값) + (j번째 행렬 연산) 과 (i+1번째에서 j번째 행렬 연산의 최소값) + (i번째 행렬의 연산) 이라고 착각해서 풀었다. 실제로는 양 끝에 추가하는 경우 뿐만 아니라 i번째에서 j번째 행렬 사이에 끊을 수 있는 모든 경우를 다 비교해봐야된다. 맞는 풀이 위 잘못된 풀이를 수정하여, i번째에서 j번째 행렬 연산의 최소값은...
스프링 WebFlux: 스프링 5의 새로운 리액티브 웹 프레임워크 스프링 WebFlux 사용하기 스프링MVC 같은 전형적인 서블릿 기반의 웹 프레임워크는 스레드 블로킹과 다중 스레드로 수행된다. 기본적으로 하나의 요청 당 하나의 스레드가 처리하고, 하나의 스레드 내에서 대부분의 상호 작용이 블록킹된다. 블로킹 웹 프레임워크는 요청량의 증가에 따른 확장이 어렵다. 처리가 느린 작업 스레드로 인해 스레드 풀로 반환되어 또 다른 요청 처리를 준비하는 데 많은 시간이 걸린다. 비동기 웹 프레임워크는 적은 수의 스레드로 더 높은 확장성을 성취한다....
안티 패턴: 겉으로 적절한 것처럼 보이지만 장래에 더 큰 문제로 이어지는 반복적인 문제 비공개 메서드 단위 테스트 비공개 메서드와 테스트 취약성 비공개 메서드를 노출하는 경우 식별할 수 있는 동작만 테스트하는 것을 위반한다. 비공개 메서드를 노출하면 테스트가 구현 세부 사항과 결합되고 결과적으로 리팩터링 내성이 떨어진다. 비공개 메서드와 불필요한 커버리지 비공개 메서드가 너무 복잡해서 식별할 수 있는 동작으로 테스트하기에 충분히 커버리지를 얻을 수 없는 경우가 있다. 이런 경우 두 가지 문제가 존재할 수 있다....
버그 수정은, 수정한 버그 가치가 수정 비용을 넘어설 때만 그의미가 있음에도 불고하고 해야된다. 무해한 버그일지라도, 회사와 제품 평판이 나빠지며, 장기적으로는 수익 감소를 초래한다. 경제적인 면에서 수정할 가치가 있는 버그를 찾아내는 방법 찾아낸 버그를 모두 확인하십시오. 무료 데모 서버에서 모든 버그를 포획하는데, 가능한 많은 정보를 수집해 전체 내용을 정리해서 개발팀으로 이메일을 보낸다. 기술지원 통화내역을 버그추적의 힌트로 사용한다. 경제적인 피드백을 확인하십시오. 경비를 영업부서 비용으로 계산하는 방법 제품 자체 버그문제로 기술지원 전화를 걸었을 때, 통화비를 사용자에게 전가시키지 않고 회사가 부담하는 방법 버그를 모두 수정하는 작업이 어떤 값어치가 있는지 계산기를 두드려 보십시오....
API에서 DSL로 궁극적인 목표: 코드의 가독성과 유지 보수성을 가장 좋게 유지하는 것 깔끔한 API의 의미 코드를 읽는 독자들이 어떤 일이 벌어질지 명확하게 이해할 수 있어야 한다. 이름과 개념을 잘 선택하면 이런 목적을 달성할 수 있다. 어떤 언어를 상요하건 일므을 잘 붙이고 적절한 개념을 사용하는 것은 매우 중요하다. 코드가 간결해야 한다. 불필요한 구문이나 번잡한 준비 코드가 가능한 한 적어야 한다. 깔끔한 API는 언어에 내장된 기능과 거의 구분할 수 없다. 코틀린 DSL도 온전히 컴파일 시접에 타입이 정해진다....
오답 여부: o 편집 시간: 2022년 3월 15일 오후 2:35 코드 Algorithm/10942.py at main · Junroot/Algorithm 풀이 질문의 개수가 최대 1,000,000개이므로 질문하는 순간 팰린드롬을 계산하면 시간 초과가 발생한다는 것을 알 수 있다. 그러면 미리 팰린드롬을 계산해둬야 되는데 수열의 크기가 최대 2,000이므로 O(N^2)내로 해결해야된다. 어떤 팰린드롬이 있을 때 이 수열의 왼쪽, 오른쪽에 같은 수를 붙이면 계속 팰린드롬이라는 성질을 이용해 문제를 접근했다. 잘못된 풀이 나는 위의 성질을 이용해서 길이가 1, 2인 팰린드롬들을 구하고 이 팰린드롬에서 왼쪽과 오른쪽을 늘리면서 구할 수 있는 모든 팰린드롬을 구했다....
편집 시간: 2022년 2월 7일 오후 8:38 코드 Algorithm/10866.py at main · Junroot/Algorithm 풀이 양방향 링크드 리스트를 이용해서 덱을 만들었다.
편집 시간: 2022년 1월 31일 오후 6:35 코드 Algorithm/10845.py at main · Junroot/Algorithm Algorithm/10845-2.py at main · Junroot/Algorithm 풀이 큐를 사용할 수 있는 라이브러리인 deque를 사용하면 쉽게 해결이 가능하다. 만약 라이브러리를 사용하고 문제플 해결하고 쉽다면 두 번째 코드를 확인하면된다.
편집 시간: 2022년 1월 31일 오후 5:52 코드 Algorithm/10828.py at main · Junroot/Algorithm 풀이 배열을 이용해서 쉽게 스택을 구현할 수 있다. 하지만 입력에 대한 주의점이 있다. input() 함수는 느리기 때문에, 많은 수의 입력이 있을 경우에는 input() 함수보다는 sys.stdin.readline() 을 사용하는 것이 좋다. 각 명령어를 입려할 때마다 출력을 하는 것 보다 출력할 값을 배열 형태로 모아둔 다음 “\n”.join(answers) 형태로 출력하는 것이 더 효율적이다.
편집 시간: 2022년 2월 7일 오후 9:04 코드 Algorithm/10816.py at main · Junroot/Algorithm 풀이 lower bound, upper bound 이진 탐색을 이용해서 각 숫자의 개수를 구했다. 다른 사람 풀이 해쉬맵을 이용한 방법도 있다. from sys import stdin _ = int(input()) n = [int(i) for i in stdin.readline().split()] _ = int(input()) m = [int(i) for i in stdin.readline().split()] hashmap = {} for i in n: if i in hashmap: hashmap[i] += 1 else: hashmap[i] = 1 print(' '....
편집 시간: 2022년 2월 7일 오후 8:36 코드 Algorithm/10814.py at main · Junroot/Algorithm 풀이 입력된 순서를 데이터로 함께 저장하고 있으면 정렬하기 쉽다. 이 때, 입력으로 받은 age 가 문자열인지 숫자인지 확인할 필요가 있다. 다른 사람 풀이 딕셔너리를 이용해서 푸는 방법도 있다. 키를 나이로 하는 딕셔너리에 입력순으로 추가하면 순서를 보장한채로 정렬이 가능하다. import sys input = sys.stdin.readline print = sys.stdout.write N = int(input()) people = {} for n in range(N): age, name = map(str, input()....
편집 시간: 2022년 2월 12일 오후 9:51 코드 Algorithm/1074.py at main · Junroot/Algorithm 풀이 재귀로 분할 정복을 하면 쉽게 해결할 수 있다. 이 때, 굳이 모든 구역을 하나씩 셀필요 없이 찾고자 하는 위치가 포함된 구역만 재귀로 확인하면된다. 현재 정사각형의 1 / 4 크기의 칸의 개수는 구할 수 있기 때문이다.
편집 시간: 2022년 1월 31일 오후 6:05 코드 Algorithm/10250.py at main · Junroot/Algorithm 풀이 X와 Y부분을 분리해서 생각해보자. H = 6, W = 12인 경우 아래를 만족한다. N이 1 ~ 6 → X = 1 7 ~ 12 → X = 2 13 ~ 18 → X = 3 … 따라서 X는 값이 H를 주기로 값이 1씩 증가한다. N이 1부터 시작하고 X도 1부터 시작하므로 다음의 공식이 만들어진다. X = (N - 1) // H + 1...
편집 시간: 2022년 2월 7일 오후 8:30 코드 Algorithm/1018.py at main · Junroot/Algorithm 풀이 모든 경우를 탐색하면거 최소값을 구하면된다. 계산할 때, 제일 왼쪽위가 흰색인 경우와 검은색인 경우 두 가지로 나누어서 계산할 필요가 없다. 체스판의 크기가 64기 때문에 min(result, 64 - result) 로 구할 수 있다.
편집 시간: 2022년 2월 9일 오후 6:44 코드 Algorithm/1012.py at main · Junroot/Algorithm 풀이 bfs또는 dfs로 인접한 배추들의 그룹의 개수를 구하면 된다.