1978

편집 시간: 2022년 1월 31일 오후 5:52 코드 Algorithm/1978.py at main · Junroot/Algorithm 풀이 에라토스테네스의 체를 이용하면 쉽게 풀 수 있다. 2부터 (입력받은 수 중 최대값) 사이의 소수들을 모두 구하면된다.

2024-09-15 · 1 min · 30 words

1967

오답 여부: o 편집 시간: 2022년 2월 24일 오후 2:58 코드 Algorithm/1967.py at main · Junroot/Algorithm 풀이 잘못된 풀이 처음에는 분할 정복으로 문제를 접근했다. 현재 루트 노드x에서 자식 노드를 두개 선택해서 두 깊이의 합을 f(x)라고 했을 때, x의 자식 노드들 a,b에 대해서 f(a), f(b)가 있을 때 max( f(x), f(a), f(b) ) 답이라고 생각했지만 수많은 재귀와 연산과정으로 메모리 초과 또는 시간초과가 발생했다. 맞는 풀이 트리에서 지름을 구하는 방법이 따로 있었다. 임의의 노드에서 트리 안에 가장 먼 노드를 a라고 했을 때, a와 가장 먼 노드 사이의 거리가 지름에 해당한다....

2024-09-15 · 1 min · 87 words

1932

편집 시간: 2022년 2월 16일 오후 9:29 코드 Algorithm/1932.py at main · Junroot/Algorithm 풀이 dp로 풀 수 있다. f(i,j): i행 j열의 값의 최대값 f(i, j) = max(f(i - 1, j), f(i - 1, j + 1)) + triangle[i, j]

2024-09-15 · 1 min · 39 words

1931

편집 시간: 2022년 2월 12일 오후 9:30 코드 Algorithm/1931.py at main · Junroot/Algorithm 풀이 그리디도 풀 수 있다. 회의가 일찍 끝나는 순으로 회의실을 배정하면, 최대한 많은 회의를 배정할 수 있다.

2024-09-15 · 1 min · 30 words

1927

편집 시간: 2022년 2월 12일 오후 9:42 코드 Algorithm/1927.py at main · Junroot/Algorithm 풀이 python의 heapq를 이용하면 된다. 하지만 priority queue를 직접 구현해봤다. 새로운 값을 추가했을 때, 힙의 마지막에 추가한 뒤 자신위 부모보다 작을 때까지 하나씩 위로 올린다. 값을 삭제할 때는 가장 마지막 노드를 부모로 올린 뒤에 자신의 자식노드와 비교하면서 자신이 자식 노드보다 클 때 까지 아래로 하나씩 내린다. 이 때, 자식 둘이 모두 부모보다 작을 경우 둘 중 더 작은 자식과 교환해야된다....

2024-09-15 · 1 min · 73 words

1920

편집 시간: 2022년 2월 7일 오후 8:28 코드 Algorithm/1920.py at main · Junroot/Algorithm 풀이 집합의 조회는 O(1)기 때문에, 집합을 이용하면된다.

2024-09-15 · 1 min · 20 words

1918

오답 여부: o 편집 시간: 2022년 2월 24일 오후 3:23 코드 Algorithm/1918.py at main · Junroot/Algorithm 풀이 먼제 중위 표기식과 후위 표기식 모두 항의 순서는 바뀌지 않는 것을 확인했어야됐다. 그리고 후위 표기식은 뒤에 있는 항을 대상으로한 연산자를 먼저 기입해야된다. 따라서 연산자를 순서대로 확인하면서 뒤에 있는 연산자보다 앞에 있는 연산자를 먼저 처리해야된다면, 미리 처리해야된다. A+B*C-D/E ABC*+DE/- 위의 예에서도 - 연산자가 * 연산자보다 우선순위가 낮기 때문에 앞에 있는 연산자를 먼저처리하여 ABC*+ 가 되고, 그 이후에 DE/- 가 된다....

2024-09-15 · 1 min · 85 words

19-자동으로 충돌 보고서를 수집하세요

자료 수집 문제를 분석한느 과정에서 도움이 된다고 생각하는 질문만 골라 최소로 물어봐야한다. 질문을 많이 할수록 점점 더 대답은 줄어든다. 충돌을 보고 하는 과정에서 익명성과 사생활 보호를 강조하는 정책이 중요하다. 자동으로 수집한 자료가 개발자가 충돌 원인을 밝히는 데 도움이 될 수 있는지 고민해야된다. 제품의 정확한 버전 운영체제 버전과 인터넷 익스플로러 버전 충돌이 발생한 코드 파일명과 행 번호 문자열로 표현하는 오류 메시지 오류 종류를 위한 고유한 숫자 코드 어떤 작업을 하고 있었는지에 대한 사용자 설명 사용자 이메일 주소 정보를 최소한으로 수집해야된다....

2024-09-15 · 2 min · 331 words

19-스프링 배포하기

배포 옵션 빌드 및 실행 방법 STS나 IntelliJ IDEA 등의 IDE에서 애플리케이션을 빌드하고 실행 메이븐 springboot:run이나 그래들 bootRun 태스크를 사용해서 명령행에서 애플리케이션을 빌드하고 실행한다. 메이븐이나 그래들을 사용해서 실행 가능한 JAR 파일을 생성한다. 메이븐이나 그래들을 사용해서 WAR 파일을 생성한다. 배포 방법 자바 애플리케이션 서버에 배포하기: 톰캣, 웹스피어, 웹로직 등의 자바 애플리케이션 서버에 애플리케이션을 배포해야 한다면, 선택의 여지없이 WAR 파일로 애플리케이션을 빌드해야 한다. 클라우드에 배포하기: AWS, Azure 등의 클라우드 플랫폼으로 배포한다면, 실행 가능한 JAR 파일이 최사으이 선택이다....

2024-09-15 · 3 min · 507 words

18870

편집 시간: 2022년 2월 16일 오후 3:43 코드 Algorithm/18870.py at main · Junroot/Algorithm 풀이 좌표를 압축하기 위해서는 해당 숫자가 몇 번째로 큰 지 확인해야되기 때문에 정렬을 할 수 밖에 없다. 최대한 적은 개수를 정렬하기 위해서, 중복된 수를 제거한 뒤 정렬을 했다.

2024-09-15 · 1 min · 41 words

1865

오답 여부: o 편집 시간: 2022년 2월 24일 오후 3:49 코드 Algorithm/1865.py at main · Junroot/Algorithm 풀이 문제 그대로 음의 사이클이 존재하는지 확인하면 된다. 벨만 포드 알고리즘을 사용하면 음의 사이클을 확인할 수 있다. 처음에는 시작노드를 1부터 n까지 모든 경우를 다 확인해서 음의 사이클이 발생하는지 확인했는데 이는 시간초과가 발생헀다. distances = [INF for _ in range(n + 1)] 로 시작하고, 값 갱신 조건에 distances[next] != INF 를 빼면 한번의 벨만 포드 알고리즘만으로 해결이 가능하다....

2024-09-15 · 1 min · 85 words

1806

편집 시간: 2022년 3월 3일 오후 2:02 코드 Algorithm/1806.py at main · Junroot/Algorithm 풀이 루프문을 돌면서 해당 index로 끝나는 가장 짧은 수열을 찾는 방식으로 문제를 풀었다. 가장 잛은 수열을 구했다면, 다음 index에서는 앞의 수열에 index에 해당하는 수를 추가해주고 앞에서부터 s이상이 되는 가장 짧은 수가 되도록 수를 하나씩 빼주면 된다. 선입선출 때문에 나는 큐를 이용해서 문제를 풀었지만, 큐의 시작 부분과 끝 부분만 알고 있으면 풀 수 있기때문에 인덱스 두 개로 충분히 풀 수 있다....

2024-09-15 · 1 min · 73 words

18-더불어 살기

윈도우와 유닉스는 기능적인 차이점 보다는 유사점이 더 많다. 윈도우와 유닉스에는 기능적 차이점 보다는 문화적인 차이점이 존재한다. 유닉스 문화는 다른 프로그래머에게 유용한 코드를 제공하는 것에 가치를 두는 반면, 윈도우 문화는 프로그래머가 아닌 사람에게 유용한 코드를 제공하는 것에 가치를 둔다. 유닉스 프로그래밍 문화는 명령행에서 호출할 수 있고 모든 동작 방향을 제어할 수 있는 인수를 취할 수 있다. 유닉스 프로그래밍 문화는 질서 정연하며 기계가 읽을 수 잇는 일반 텍스트 형식으로 출력을 뽑아낼 수 있는 프로그램을 높게 평가한다....

2024-09-15 · 1 min · 161 words

18-JMX로 스프링 모니터링하기

JMX(Java Management Extensions): 자바 애플리케이션을 모니터링하고 관리하는 표준 방법 JMX는 MBeans(managed beans) 컴포넌트를 노출함으로써 외부의 JMX 클라이언트는 오퍼레이션 호출, 속성 검사, MBeans의 이베트 모니터링을 통해 애플리케이션을 관리할 수 있다. JMX는 스프링 부트 애플리케이션에 기본적으로 자동 활성화된다. 이예 따라 모든 액추에이터 엔드포인트는 MBeans로 노출된다. 또한, 스프링 애플리케이션 컨텍스트의 어떤 다른 빈도 MBeans로 노출할 수 있게 했다. 액추에이터 MBeans 사용하기 스프링 부트는 /heapdump를 제외한 모든 액추에이터 엔드포인트가 HTTP처럼 명시적으로 포함시킬 필요 없이 기본으로 MBeans로 노출되어 있다....

2024-09-15 · 1 min · 183 words

17685

날짜: 2022년 8월 23일 오전 11:21 코드 Algorithm/17685.py at main · Junroot/Algorithm 풀이 단순하게 단어하나씩 입력을 늘려가면서 구하게되면 O(N*L)로 타임아웃이 발생할 것이다. 트라이를 이용해 중복되는 계산 부분을 제거하면 시간복잡도를 O(L)로 줄일 수 있다. 위 사진은 ‘go, gone, guild’를 트라이로 만들었을 때의 그림이다. 오른쪽 상단은 존재할 수 있는 단어 개수, 오른쪽 하단은 해당 글자로 끝나는 단어가 있는지 여부를 나타내는 true, false를 나타낸다. 최종 답을 찾을 때는 오른쪽 상단이 1이거나, 현재 글자로 끝이나는 단어의 depth를 모두 더해주면된다....

2024-09-15 · 1 min · 75 words

17682

날짜: 2022년 7월 12일 오후 7:08 코드 Algorithm/17682.py at main · Junroot/Algorithm 풀이 단순 구현문제다. 파싱을 한뒤 문제조건에 맞게 구현하면된다.

2024-09-15 · 1 min · 20 words

17681

날짜: 2022년 7월 12일 오후 8:01 코드 Algorithm/17681.py at main · Junroot/Algorithm 풀이 간단한 구현문제다.

2024-09-15 · 1 min · 15 words

17679

날짜: 2022년 7월 8일 오후 6:43 코드 Algorithm/17679.py at main · Junroot/Algorithm 풀이 단순 구현 문제다. 더 이상 제거되는 블록이 없을 때까지 반복하면 된다.

2024-09-15 · 1 min · 24 words

17678

날짜: 2022년 7월 6일 오전 10:34 코드 Algorithm/17678.py at main · Junroot/Algorithm 풀이 크루들이 타게되는 버스를 모두 차례대로 계산한 뒤에, 콘이 마지막 버스를 타기위해 언제 나오면 되는지를 계산하면된다. 마지막 버스가 만원인 경우 마지막 버스에 마지막에 타는 크루보다 1분 빨리 도착하면 된다. 마지막 버스가 만원이 아닐 경우 마지막 버스의 도착시간에 맞춰서 도착하면 된다.

2024-09-15 · 1 min · 52 words

17676

날짜: 2022년 3월 8일 오후 3:41 코드 Algorithm/17676.py at main · Junroot/Algorithm 풀이 2가지 문제를 해결해야 됐다. 로그를 기반으로 처리시각의 시작 시각과 끝 시각 구하기 초당 최대 처리량 구하기 처리시각 구하기 ms 단위로 처리해야되기 때문에 2016-09-15에서 몇 ms가 지났는지를 기준으로 처리하기로 했다. 로그의 마지막 부분인 처리시간 T를 ms단위로 변환하는 것에 어려움이 있었는데, 로그에 적혀있는 숫자 개수를 기반으로 처리했다. 숫자의 개수가 0이 될 때까지 뒤에 0을 더 붙이는 형식으로 구현했다. def second_to_ms(second): result = 0 digit_count = 0 for c in second: if "0" <= c <= "9": result = result * 10 + int(c) digit_count += 1 while digit_count < 4: result *= 10 digit_count += 1 return result 초당 최대 처리량 구하기 처음에는 0ms부터 24 * 60 * 60 * 1000ms 까지 모든 경우를 다 구하려고했는데 이 방법은 당연히 시간 초과가 발생했다....

2024-09-15 · 1 min · 199 words