11724

편집 시간: 2022년 2월 12일 오후 9:37 코드 Algorithm/11724.py at main · Junroot/Algorithm 풀이 1부터 n까지 노드를 확인하면서 새로운 노드를 만날 때마다 bfs로 탐색을 한다. 이렇게 bfs를 한 개수를 구하면 된다.

2024-09-15 · 1 min · 31 words

11723

편집 시간: 2022년 2월 12일 오후 9:56 코드 Algorithm/11723.py at main · Junroot/Algorithm 풀이 x값이 1이상 20이하이므로 길이가 21인 bool 리스트를 만들면 쉽게 해결할 수 있다. 이 때, print()를 사용하면 메모리 초과가 발생하는 문제가 있어서 sys.stdout.write() 를 사용했다.

2024-09-15 · 1 min · 38 words

1167

편집 시간: 2022년 2월 24일 오후 3:15 코드 Algorithm/1167.py at main · Junroot/Algorithm 풀이 1967 위와 같은 문제다.

2024-09-15 · 1 min · 18 words

11660

편집 시간: 2022년 2월 24일 오후 3:10 코드 Algorithm/11660.py at main · Junroot/Algorithm 풀이 Summed-area table을 이용하면 O(n^2)만에 해결이 가능하다.

2024-09-15 · 1 min · 20 words

11650

편집 시간: 2022년 1월 31일 오후 6:09 코드 https://github.com/Junroot/Algorithm/blob/main/backjoon/11650.py 풀이 기본적인 정렬 알고리즘을 사용하면 된다.

2024-09-15 · 1 min · 15 words

1149

편집 시간: 2022년 2월 16일 오후 4:10 코드 Algorithm/1149.py at main · Junroot/Algorithm 풀이 모든 경우의 수를 다 구해보는 방법 밖에 없다. 함수 f(index, last_color)를 만들어 함수를 아래와 같이 정의한다. f(index, last_color): index번째 집이 last_color를 사용하지 못할 때 최소 index부터 n번째 집까지 칠하는데 최소 비용 그러면 아래와 같은 점화식이 만들어진다. f(index, last_color) = min( (index번째 집의 color1 비용) + f(index + 1, color1), (index번째 집의 color2 비용) + f(index + 1, color2) )...

2024-09-15 · 1 min · 92 words

11444

오답 여부: o 편집 시간: 2022년 2월 24일 오후 6:17 코드 Algorithm/11444.py at main · Junroot/Algorithm 풀이 처음에 n의 범위를 보고 피보나치 수의 일반항을 이용하는 문제인 줄 알았으나, n이 굉장히 클 때 부동소수점의 값이 잘못될 수도 있다는 사실을 뒤늦게 알게되었다. 행렬의 제곱을 이용하면 O(log n) 만에 해결이 가능하다.

2024-09-15 · 1 min · 48 words

11404

편집 시간: 2022년 2월 24일 오후 2:39 코드 11404번: 플로이드 풀이 정석적인 플로이드 워셜 알고리즘 문제다.

2024-09-15 · 1 min · 16 words

11399

편집 시간: 2022년 2월 9일 오후 6:23 코드 Algorithm/11399.py at main · Junroot/Algorithm 풀이 최소값을 구하기 위해서는 작은 수 순서대로 큰 수에 곱해져야된다. 증명은 따로 하지 않겠다.

2024-09-15 · 1 min · 27 words

11279

편집 시간: 2022년 2월 12일 오후 9:43 코드 Algorithm/11279.py at main · Junroot/Algorithm 풀이 1927 와 풀이가 같다.

2024-09-15 · 1 min · 18 words

11053

오답 여부: 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)...

2024-09-15 · 1 min · 140 words

11050

편집 시간: 2022년 2월 7일 오후 8:48 코드 Algorithm/11050.py at main · Junroot/Algorithm 풀이 팩토리얼을 계산하는 함수를 만들면된다. 중복되는 팩토리얼 계산이 있어서 dp를 사용했다.

2024-09-15 · 1 min · 24 words

11049

오답 여부: 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번째 행렬 연산의 최소값은...

2024-09-15 · 1 min · 100 words

11-리액티브 API 개발하기

스프링 WebFlux: 스프링 5의 새로운 리액티브 웹 프레임워크 스프링 WebFlux 사용하기 스프링MVC 같은 전형적인 서블릿 기반의 웹 프레임워크는 스레드 블로킹과 다중 스레드로 수행된다. 기본적으로 하나의 요청 당 하나의 스레드가 처리하고, 하나의 스레드 내에서 대부분의 상호 작용이 블록킹된다. 블로킹 웹 프레임워크는 요청량의 증가에 따른 확장이 어렵다. 처리가 느린 작업 스레드로 인해 스레드 풀로 반환되어 또 다른 요청 처리를 준비하는 데 많은 시간이 걸린다. 비동기 웹 프레임워크는 적은 수의 스레드로 더 높은 확장성을 성취한다....

2024-09-15 · 6 min · 1093 words

11-단위 테스트 안티 패턴

안티 패턴: 겉으로 적절한 것처럼 보이지만 장래에 더 큰 문제로 이어지는 반복적인 문제 비공개 메서드 단위 테스트 비공개 메서드와 테스트 취약성 비공개 메서드를 노출하는 경우 식별할 수 있는 동작만 테스트하는 것을 위반한다. 비공개 메서드를 노출하면 테스트가 구현 세부 사항과 결합되고 결과적으로 리팩터링 내성이 떨어진다. 비공개 메서드와 불필요한 커버리지 비공개 메서드가 너무 복잡해서 식별할 수 있는 동작으로 테스트하기에 충분히 커버리지를 얻을 수 없는 경우가 있다. 이런 경우 두 가지 문제가 존재할 수 있다....

2024-09-15 · 3 min · 561 words

11-고리타분한 버그 수정

버그 수정은, 수정한 버그 가치가 수정 비용을 넘어설 때만 그의미가 있음에도 불고하고 해야된다. 무해한 버그일지라도, 회사와 제품 평판이 나빠지며, 장기적으로는 수익 감소를 초래한다. 경제적인 면에서 수정할 가치가 있는 버그를 찾아내는 방법 찾아낸 버그를 모두 확인하십시오. 무료 데모 서버에서 모든 버그를 포획하는데, 가능한 많은 정보를 수집해 전체 내용을 정리해서 개발팀으로 이메일을 보낸다. 기술지원 통화내역을 버그추적의 힌트로 사용한다. 경제적인 피드백을 확인하십시오. 경비를 영업부서 비용으로 계산하는 방법 제품 자체 버그문제로 기술지원 전화를 걸었을 때, 통화비를 사용자에게 전가시키지 않고 회사가 부담하는 방법 버그를 모두 수정하는 작업이 어떤 값어치가 있는지 계산기를 두드려 보십시오....

2024-09-15 · 1 min · 88 words

11-DSL 만들기

API에서 DSL로 궁극적인 목표: 코드의 가독성과 유지 보수성을 가장 좋게 유지하는 것 깔끔한 API의 의미 코드를 읽는 독자들이 어떤 일이 벌어질지 명확하게 이해할 수 있어야 한다. 이름과 개념을 잘 선택하면 이런 목적을 달성할 수 있다. 어떤 언어를 상요하건 일므을 잘 붙이고 적절한 개념을 사용하는 것은 매우 중요하다. 코드가 간결해야 한다. 불필요한 구문이나 번잡한 준비 코드가 가능한 한 적어야 한다. 깔끔한 API는 언어에 내장된 기능과 거의 구분할 수 없다. 코틀린 DSL도 온전히 컴파일 시접에 타입이 정해진다....

2024-09-15 · 3 min · 492 words

10942

오답 여부: o 편집 시간: 2022년 3월 15일 오후 2:35 코드 Algorithm/10942.py at main · Junroot/Algorithm 풀이 질문의 개수가 최대 1,000,000개이므로 질문하는 순간 팰린드롬을 계산하면 시간 초과가 발생한다는 것을 알 수 있다. 그러면 미리 팰린드롬을 계산해둬야 되는데 수열의 크기가 최대 2,000이므로 O(N^2)내로 해결해야된다. 어떤 팰린드롬이 있을 때 이 수열의 왼쪽, 오른쪽에 같은 수를 붙이면 계속 팰린드롬이라는 성질을 이용해 문제를 접근했다. 잘못된 풀이 나는 위의 성질을 이용해서 길이가 1, 2인 팰린드롬들을 구하고 이 팰린드롬에서 왼쪽과 오른쪽을 늘리면서 구할 수 있는 모든 팰린드롬을 구했다....

2024-09-15 · 2 min · 351 words

10866

편집 시간: 2022년 2월 7일 오후 8:38 코드 Algorithm/10866.py at main · Junroot/Algorithm 풀이 양방향 링크드 리스트를 이용해서 덱을 만들었다.

2024-09-15 · 1 min · 20 words

10845

편집 시간: 2022년 1월 31일 오후 6:35 코드 Algorithm/10845.py at main · Junroot/Algorithm Algorithm/10845-2.py at main · Junroot/Algorithm 풀이 큐를 사용할 수 있는 라이브러리인 deque를 사용하면 쉽게 해결이 가능하다. 만약 라이브러리를 사용하고 문제플 해결하고 쉽다면 두 번째 코드를 확인하면된다.

2024-09-15 · 1 min · 39 words