2164

편집 시간: 2022년 2월 7일 오후 8:41 코드 Algorithm/2164.py at main · Junroot/Algorithm 풀이 큐를 이용해서 해결할 수 있다.

2024-09-15 · 1 min · 19 words

21611

편집 시간: 2022년 4월 29일 오후 8:36 코드 Algorithm/21611.py at main · Junroot/Algorithm 풀이 처음에는 구슬 정보를 하나의 리스트로 표현해서 처리해보려고했다. 하지만 이 방법은 블리자드가 일어나는 인덱스를 계산하는데 상당히 복잡해졌다. 두 번째 접근 방법으로 격자를 나타내는 이중 배열에서 문제의 조건들을 처리하도록 구현했다. 이 때 현재 위치에서 다음 위치를 계산하는 과정이 필요했는데 이를 그림으로 그려보니 규칙이 보였다. 이를 수식으로 구한 뒤 다음위치를 찾을 수 있는 로직을 완성했다. 추가적으로 블리자드가 일어난 뒤 중간에 빈 칸이 발생한 것을 앞으로 한칸씩 미는 과정을 굳이 구현할 필요가 없다....

2024-09-15 · 1 min · 94 words

21610

편집 시간: 2022년 4월 29일 오후 8:29 코드 Algorithm/21610.py at main · Junroot/Algorithm 풀이 단순 시뮬레이션 문제다. 주의해야될 점을스자면 5번 과정에 기존에 구름이 있던 위치를 알아야되기 때문에 3번 과정을 제일 마지막에 하도록 처리한다. 그리고 구름이 이동하는 거리는 격자의 크기만큼 이동하면 같은 상황이 되므로 거리를 격자의 크기로 나눈 나머지만큼 이동시킨다.

2024-09-15 · 1 min · 49 words

21-성과급은 오히려 해가 된다

부정적인 평가는 팀원 사기에 지대한 영향을 미친다. 긍정적인 평가라도 본인이 기대한 수준에 미치지 못한다면, 부정적인 평가만큼이나 사기를 떨어뜨린다. 부정적인 평가는 사기를 확 떨어뜨리는 반면, 긍정적인 평가는 아무런 영향을 미치지 못한다. 업무 완수나 성공적인 업무 수행으로 보상을 바라는 사람은 전혀 보상을 바라지 않는 사람보다 성과가 떨어진다.

2024-09-15 · 1 min · 45 words

2098

오답 여부: o 편집 시간: 2022년 3월 29일 오후 4:15 코드 Algorithm/2098.py at main · Junroot/Algorithm 풀이 모든 경우를 탐색하면 O(N!). 즉, 최악의 경우 16!번 탐색해야되기 때문에 당연히 아닐거라고 생각했다. 하지만, 메모이제이션을 사용하면 O(N * 2^N) 만에 풀 수있다. 최악의 경우도 1,048,576번만 탐색하게 된다. 아직 메모이제이션을 사용했을때 시간복잡도 계산에 익숙하지 않은 것이 문제를 풀지 못 한 원인이 아닐까라고 생각한다. f(a, k): k에 담겨있는 노드들을 방문한 상태고 현재 위치가 a번 노드일 때 최소 비용...

2024-09-15 · 1 min · 103 words

20-인터뷰를 위한 게릴라 가이드

직원을 고용하는 방식 이력서 실수가 많은 경우 버린다. 과거에 특별히 어려운 선별 과정을 거친 사람이 있는지 확인 전화 인터뷰 프로그래밍 문제 하나로 30분 정도 진행 대면 인터뷰 면접관은 최소 6명, 최소 5명은 함꼐 일하게 될 동료 6명 중 2명이라도 지원자를 별로라고 여긴다면, 그 사람은 고용하지 않는다. 여러 지원자를 동시에 인터뷰하지 않는다. 인터뷰는 최소 1시간 인터뷰를 마치면 지원자에 대한 결간은 칼같이 내려야 한다. 합불 선정 기준 잘 모르겠으면 불합격 기준에 미달하는 지원자를 채용하는 실수보다는 훌륭한 지원자를 놓치는 실수를 저지르는 편이 차라리 낫다....

2024-09-15 · 1 min · 209 words

2-가독성

가독성을 목표로 설계하라 개발자는 어떤 코드를 작성하는 것보다 읽는 데 많은 시간을 소모한다. 인식 부하 감소 기본적으로 ‘인지 부하’를 줄이는 방향으로 코드를 작성해라. 구현 A가 훨씬 가독성 좋은 코드다. 일반적인 관용구를 사용해서 이해하기 쉽도록 작성해야된다. 구현 A가 수정하기 더 쉽고, 디버깅도 간단하다. 구현 B는 showPerson() 호출에 null이 발생하면, showError()도 호출된다. 이처럼 잘못된 동작이 발생할 수 있다. 극단적이 되지 않기 위의 내용이 ’let은 절대로 쓰면 안 된다’를 의미하는 것은 아니다. let을 사용하면 좋은 경우 nullable 가변 프로퍼티의 안전 호출이 필요할 때 연산을 아규먼트처리 후로 이동시킬 때 데코레이터를 사용해서 객체를 랩할 때 인식 부하 비용이 발생해도 지불만한 가치가 있는지 고려해야된다....

2024-09-15 · 4 min · 753 words

1991

편집 시간: 2022년 2월 21일 오후 2:09 코드 Algorithm/1991.py at main · Junroot/Algorithm 풀이 재귀함수를 이용하면 쉽게 구현할 수 있다.

2024-09-15 · 1 min · 20 words

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