1463

편집 시간: 2022년 4월 1일 오후 4:30 코드 Algorithm/1463.py at main · Junroot/Algorithm 풀이 1에서 시작해서 x에 도착하기까지 연산의 수로 문제를 바꾸어 해결했다. BFS로 순회하면서 이미 방문한 숫자는 무시했을 때, 최초로 x에 도착했을 때의 연산의 수가 답이 된다.

2024-09-15 · 1 min · 38 words

14501

편집 시간: 2022년 4월 21일 오후 7:59 코드 Algorithm/14501.py at main · Junroot/Algorithm 풀이 인풋 범위를 보니 브루트포스로 구현해도 되지만, dp를 이용해서 풀었다. f(x): x일까지의 최대 이익 f(x) = max(consults[index][2] + f(consults[x][1] - 1), f(x-1)) consults[index][1] == x인 경우만 다른 풀이 다른 사람의 풀이를 보니 상담 완료날짜 기준이 아니라 시작날짜를 기준으로 dp로 풀면 정렬을 할 필요가 없었다. O(nlogn)을 O(n)문제로 해결할 수 있다.

2024-09-15 · 1 min · 62 words

14500

편집 시간: 2022년 4월 21일 오후 4:31 코드 Algorithm/14500.py at main · Junroot/Algorithm 풀이 모든 경우를 다 해보고 가장 큰 값을 찾는다.

2024-09-15 · 1 min · 22 words

14499

편집 시간: 2022년 4월 21일 오후 4:28 코드 Algorithm/14499.py at main · Junroot/Algorithm 풀이 구현 문제다. 주사위를 배열로 저장해두고 회전할 때의 배열이 어떻게 변하는지 직접 그려보면서 풀었다.

2024-09-15 · 1 min · 27 words

14003

오답 여부: o 편집 시간: 2022년 4월 5일 오후 7:35 코드 Algorithm/14003.py at main · Junroot/Algorithm 풀이 12015 이 때와 완전히 똑같이 잘못된 방법으로 접근했다… 풀이 방법도 언급한 문제와 같은데, 추가적으로 가장긴 수열을 출력을 해야된다. 수열을 출력하기 위해서 입력값의 각 숫자가 sequence 에 몇번째 index에 저장이 되는지 기억해두면 출력할 수 있다. 아래 링크를 참고하면 이해하기 쉽다. https://yabmoons.tistory.com/561

2024-09-15 · 1 min · 57 words

14-화성인 아키텍터를 조심하세요

위대한 사상가는 문제에 대해 생각할 때, 패턴을 보기 시작한다. 하지만 추상화를 추구하기 위해 너무 높이 올라가면, 모순이 생기고 전체만을 아우르는 의미없는 내용만 담게 된다.

2024-09-15 · 1 min · 24 words

14-클라우드 구성 관리

스프링 클라우드의 구성 서버는 애플리케이션의 모든 마이크로서비스에 대해 중앙 집중식의 구성(config)를 제공한다. 구성 서버를 사용하면 애플리케이션의 모든 구성을 한 곳에서 관리할 수 있다. 구성 공유하기 application.yml 또는 application.properties 파일 속성만 변경하기 위해 애플리케이션을 재배포해야된다. 데이터베이스 비밀번호와 같은 일부속성들은 개발자 조차 접근할 수 없도록 해야한다. 자바 시스템 속성이나 운영체제의 환경 변수에 구성 속성을 설정하는 경우 속성의 변경으로 인해 애플리케이션이 재시작되어야 한다. 데이터베이스 비밀번호와 같은 일부속성들은 개발자 조차 접근할 수 없도록 해야한다....

2024-09-15 · 6 min · 1260 words

13549

편집 시간: 2022년 2월 24일 오후 3:03 코드 Algorithm/13549.py at main · Junroot/Algorithm 풀이 bfs로 풀면되지만, 순간이동하는 경우에는 시간이 흐르지 않기 때문에 큐 대신 우선순위 큐를 사용하면 된다.

2024-09-15 · 1 min · 28 words

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