13460

편집 시간: 2022년 3월 1일 오후 7:24 코드 Algorithm/13460.py at main · Junroot/Algorithm 풀이 기본적으로 BFS를 사용해서 모든 경우를 탐색하면 된다. 하지만, R과 B의 이동 처리에 대한 문제가 있었다. R과 B가 나란히 붙어있으면, R과 B가 함께 굴러가야되는데 막혀있는 걸로 판별하여 한 구슬만 이동하게 되는 경우가 발생할 수 있기때문이다. 이를 해결하기 위해 한 틱에 한 칸씩 이동시키면서 앞에 가록막는 구슬이 있다면 일단 정지시키도록 했다. 이를 계속 반복하여 R과 B가 더 이상 움직이 못할 때까지 이동시키면 된다....

2024-09-15 · 1 min · 75 words

13458

편집 시간: 2022년 4월 21일 오후 4:26 코드 Algorithm/13458.py at main · Junroot/Algorithm 풀이 간단해서 따로 설명할 것이 없다. 시험장 하나씩 계산해서 합하면된다.

2024-09-15 · 1 min · 23 words

13-종이 프로토타이핑

제품이 수행할 모든 작업을 프로토타입이 할 수 없다면 쓸모없어진다. 종이 프로토타입은 소프트웨어 도구로 할 수 있는 어떤 작업보다도 엄청나게 저렴하다.

2024-09-15 · 1 min · 20 words

13-서비스 탐구하기

마이크로서비스 이해하기 단일 애플리케이션의 문제점 코드 전체를 파악하기 어렵다. 테스트가 복잡해진다. 라이브러리 간의 충돌이 생기기 쉽다. 확장 시 비효율적이다. 확장 목적으로 더 많은 서버에 애플리케이션을 배포해야 할 때는 애플리케이션의 일부가아닌 전체를 배포해야 한다. 적용할 기술을 결정할 때도 애플리케이션 전체를 고려해야 한다. 프로덕션으로 이양하기 위해 많은 노력이 필요하다. 단일 애플리케이션은 크기와 복잡도 때문에 더 엄격한 개발 프로세스와 테스트가 필요하다. 마이크로서비스 아키텍처 코드를 이해하기 쉽다. 테스트가 쉽다. 라이브러리 비호환성 문제가 생기지 않는다. 독자적으로 규모를 조정할 수 있다....

2024-09-15 · 4 min · 735 words

12865

오답 여부: o 편집 시간: 2022년 2월 24일 오후 2:29 코드 Algorithm/12865.py at main · Junroot/Algorithm Algorithm/12865-2.py at main · Junroot/Algorithm 풀이 나쁜 풀이(12865.py) dp로 풀 수 있다. f(i, w): 0번째부터 i번째까지 물건들 중에서 w까지 담을 수 있는 가방이 있을 때, 담을 수 있는 최대 가치 f(i, w) = max( f(i - 1, w - weight[i]) + value[i], f(i - 1, w) ) 하지만 재귀를 이용한 탑다운으로 풀다보니 엄청나게 느린 결과가 나왔다....

2024-09-15 · 1 min · 81 words

12852

편집 시간: 2022년 4월 1일 오후 4:34 코드 Algorithm/12852.py at main · Junroot/Algorithm 풀이 f(N)이 N을 1로 만들기 위해 최소 연산 수라고 가정하면 아래의 식을 만족한다. $$ f(N)=min(\space f(N/3),f(N/2),f(N-1) \space) +1 $$ 위 점화식을 이용해 바텀업으로 dp를 구현하면 쉽게 최소 연산 수를 구할 수 있다. 추가적으로, 자신이 선택한 경로를 저장해두면 연산 과정도 쉽게 구할 수 있다.

2024-09-15 · 1 min · 56 words

127 0 0 1과 통신하면 어떤 일이 발생할까

성능 테스트를 진행하면서 127.0.0.1로 통신해도, 실제 다른 노드와 통신할 때와 같은 조건으로 테스트가 가능한지 알 필요가 있었다. 네트워크 계층에서 처리되는 과정 127.0.0.1로 통신을 하면, TCP/IP 모델을 기준으로 인터넷 계층까지만 처리가 되고, 다시 올라온다. 인터넷 계층에서 IP 주소를 확인하고, 127.0.0.1가 루프백 주소인 것을 확인하게 되어 다시 디바이스로 돌아오게 된다. 따라서, Network Access Layer에서 일어나는 작업을 처리할 필요가 없어지게 된다. 실제 다른 노드의 IP로 지정하고 성능 테스트 할 때보다는 더 좋은 성능이 결과로 나올 수 있다....

2024-09-15 · 1 min · 92 words

1259

편집 시간: 2022년 2월 7일 오후 9:05 코드 Algorithm/1259.py at main · Junroot/Algorithm 풀이 입력값을 숫자가 아니라 문자열로 생각하면 쉽게 풀 수 있다.

2024-09-15 · 1 min · 23 words

12100

편집 시간: 2022년 3월 2일 오후 10:30 코드 Algorithm/12100.py at main · Junroot/Algorithm 풀이 bfs를 이용해서 모든 경우를 탐색하여 최대값을 구했다. 특정 방향으로 숫자를 합칠 때, 이미 한 번 합쳐진 숫자는 합쳐지지 못하는 점을 주의해야된다. 이를 해결하기위해, 루프를 돌면서 자신과 그 뒤에 있는 숫자가 같은 경우는 두 수를 합치고 index를 2만큼 늘리도록 구현을 했다. index_of_numbers = 0 while index_of_numbers < len(numbers) - 1: if numbers[index_of_numbers] == numbers[index_of_numbers + 1]: new_column.append(numbers[index_of_numbers] * 2) index_of_numbers += 1 else: new_column....

2024-09-15 · 1 min · 110 words

1208

오답 여부: o 편집 시간: 2022년 4월 8일 오후 6:19 코드 Algorithm/1208.py at main · Junroot/Algorithm 풀이 평범하게 모든 수열의 경우의 수를 다 구하면 $2^{40}$이므로 시간 초과가 발생할 것이다. 처음에는 dp같은 방법으로 접근하였으나 중복되는 경우가 없기 때문에 효과가 없었다. 결국 답을 찾아봤는데, 수열을 절반으로 나누어 왼쪽과 오른쪽에서 나올 수 있는 합을 각각 따로 구하여 합이 될 수 있는 것을 찾으면 $2*2^{20}$이므로 제한 시간안에 해결할 수 있다. 시간 복잡도가 O($2^{n}$) 같이 제곱 수준일 때는 n의 크기를 절반으로 줄이는 것만(O($2^{{n \over 2}}$))으로도 큰 최적화가 될 수 있다는 것을 확인할 수 있었다....

2024-09-15 · 1 min · 89 words

1202

편집 시간: 2022년 3월 30일 오후 10:05 코드 Algorithm/1202.py at main · Junroot/Algorithm 풀이 담을 수 있는 무게가 작은 가방부터 담으면서, 가방이 담을 수 있는 보석 중에 가장 가치가 높은 보석을 담으면 된다는 것을 알 수 있었다. 다음 가방으로 넘어가면서 앞에서 사용한 보석을 빼고 그 중 가치가 가장 높은 보석을 찾는 방식으로 구현하면 됐다. 이 과정에서 가장 높은 가치를 계속 찾아야되기 때문에 우선순위 큐를 사용했다. 다른 사람 풀이 보석의 정렬을 더 빠르게 하는 방법이 있었다....

2024-09-15 · 1 min · 97 words

12015(2)

오답 여부: o 편집 시간: 2022년 3월 14일 오후 2:58 코드 Algorithm/12015.py at main · Junroot/Algorithm Algorithm/12015-2.py at main · Junroot/Algorithm 풀이 잘못된 풀이 11053 기존에 이 문제에서 수열의 크기가 1000000으로 늘어났다. 즉, nlogn으로 풀어야된다는 뜻이다. 기존문제에서 dp를 사용해서 O(n^2)였는데 dp를 빠르게 구하기 위해서 수열의 크기가 큰것부터 비교하기위헤 우선순위 큐를 사용했다. 하지만 이는 최악의 경우 O(n^2logn)으로 오히려 더 느려진다는 문제가 있었다. 맞는 풀이 완전히 다른 방법으로 접근해야되었다. 그리디 + dp + 바이너리서치를 사용해야되는 문제다....

2024-09-15 · 1 min · 150 words

12015

오답 여부: o 편집 시간: 2022년 3월 14일 오후 7:59 코드 Algorithm/12015.py at main · Junroot/Algorithm Algorithm/12015-2.py at main · Junroot/Algorithm 풀이 잘못된 풀이 11053 기존에 이 문제에서 수열의 크기가 1000000으로 늘어났다. 즉, nlogn으로 풀어야된다는 뜻이다. 기존문제에서 dp를 사용해서 O(n^2)였는데 dp를 빠르게 구하기 위해서 수열의 크기가 큰것부터 비교하기위헤 우선순위 큐를 사용했다. 하지만 이는 최악의 경우 O(n^2logn)으로 오히려 더 느려진다는 문제가 있었다. 맞는 풀이 완전히 다른 방법으로 접근해야되었다. 그리디 + dp + 바이너리서치를 사용해야되는 문제다....

2024-09-15 · 1 min · 150 words

12-리액티브 데이터 퍼시스턴스

컨트롤러부터 데이터베이스에 이르기까지 데이터의 전체 플로우가 리액티브하고 블로킹되지 않는 것이 중요하다. 만일 블로킹되는 리퍼지터리에 의존하는 스프링 WebFlux 리액티브 컨트롤러를 작성한다면, 이 컨트롤러는 해당 리퍼지터리의 데이터 생성을 기다리느라 블로킹될 것이다. 스프링 데이터 리액티브 개념 이해하기 현재는 카산드라, 몽고DB, 카우치베이스, 레디스로 데이터를 저장할 때 리액티브 프로그래밍 모델을 지원한다. 관계현 데이터베이스나 JPA는 리액티브 리퍼지터리가 지원되지 않는다. 스프링 데이터 JPA로 리액티브 프로그래밍 모델을 지원하려면 관계형 데이터베이스와 JDBC 드라이버 역시 블로킹되지 않는 리액티브 모델을 지원해야 한다....

2024-09-15 · 5 min · 965 words

12-다섯 가지 세계

상품 소프트웨어 대규모 사요자가 자기 의지에 따라 선택해 사용할 수있는 소프트웨어 엄청나게 많은 사용자가 한 소프트웨어를 사용하지만, 늘 다른 대안이 있다. 상품이 성공하기 위해선 사용자 인터페이스를 평균 이상으로 쓰기 쉽게 만들어야 한다. 소프트웨어는 수많은 컴퓨터에서 동작하므로, 다양한 시스템 환경에서 매우 적극적으로 대응할 수 있는 코드여야 한다. 오픈소스, 웹 기반, 컨설팅웨어라는 세 가지 주요 변종이 있다. 오픈소스: 거의 대부분 돈을 받고 하는 일이 아니기 때문에, 역학 관계가 극적으로 바뀐다. 사용 편의성이 떨어니고, 서로 원하는 자옷에서 각자 개발을 진행할 가능성이 훨씬 더 높아져, 팀내 상호대화 수준에 따라 품질 격차가 심하게 벌어진다....

2024-09-15 · 1 min · 212 words

1197

편집 시간: 2022년 3월 1일 오후 7:11 코드 Algorithm/1197.py at main · Junroot/Algorithm 풀이 프루스칼 알고리즘을 이용해서 문제를 해결했다. 정점의 개수가 최대 10000개이므로 프림 알고리즘도 가능하다.

2024-09-15 · 1 min · 26 words

11866

편집 시간: 2022년 2월 7일 오후 8:55 코드 Algorithm/11866.py at main · Junroot/Algorithm 풀이 큐를 이용하면 쉽게 해결할 수 있다.

2024-09-15 · 1 min · 20 words

1181

편집 시간: 2022년 1월 31일 오후 6:08 코드 Algorithm/1181.py at main · Junroot/Algorithm 풀이 기본적인 정렬 알고리즘을 사용하면된다.

2024-09-15 · 1 min · 18 words

11726

편집 시간: 2022년 2월 9일 오후 6:26 코드 Algorithm/11726.py at main · Junroot/Algorithm 풀이 2xn 타일을 놓을 수 있는 경우의 수를 f(n)이라고 했을 때, f(n) = f(n-1) + f(n-2) 라는 점화식을 발견할 수 있으면 된다. 마지막에 1x2 타일을 놓는 경우가 f(n-1), 2*1을 두 개 놓는 경우가 f(n-2)기 때문이다.

2024-09-15 · 1 min · 48 words

11725

편집 시간: 2022년 2월 24일 오후 2:52 코드 Algorithm/11725.py at main · Junroot/Algorithm 풀이 트리의 루트가 1이라 했기때문에, 1부터 시작하는 bfs로 탐색하면된다. 현재 노드에서 이웃하는 아직 방문하지 않은 노드들이 현재 노드의 자식 노드가 된다.

2024-09-15 · 1 min · 34 words