42890

날짜: 2022년 6월 29일 오후 1:44 코드 Algorithm/42890.py at main · Junroot/Algorithm 풀이 가능한 모든 컬럼의 조합을 구한 뒤, 유일성을 체크하고, 최소성을 체크하면된다. 이 때 컬럼의 조합은 개수가 적은 조합부터 처리한다. 유일성: 해당 컬럼 조합에 중복이 없는지 확인하고, 없다면 유일하다. 최소성: 이미 존재하는 후보키의 조합을 부분 집합으로 가지는 경우가 없다면 최소성을 만족한다.

2024-09-15 · 1 min · 52 words

42889

날짜: 2022년 6월 29일 오후 1:41 코드 Algorithm/42889.py at main · Junroot/Algorithm 풀이 각 스테이지 별 유저 수를 세고나서, 누적합을 통해 각 스테이지를 지나간 유저들을 구하면 실패율을 구할 수 있다.

2024-09-15 · 1 min · 30 words

42888

날짜: 2022년 6월 29일 오후 1:40 코드 Algorithm/42888.py at main · Junroot/Algorithm 풀이 기록을 두 번읽어서 해결할 수 있다. 첫번째로 읽을 때는 각 유저의 최종 닉네임을 찾고, 두번째에서는 채팅방에 출력될 내용을 처리하면된다.

2024-09-15 · 1 min · 32 words

42885

날짜: 2022년 1월 31일 오후 5:51 코드 https://github.com/Junroot/Algorithm/blob/main/programmers/42885.py 풀이 가장 무거운 사람부터 처리한다는 생각으로 접근했다. 무인도에 남은 사람 중 가장 무거운 사람과 가장 가벼운 사람이 같이 배에 탈 수 있는지를 반복해서 비교해봤다. 왜 가장 가벼운 사람과 타는게 문제가 없는지 의문이 생길 수 있다. 예를들어 A>B>C>D 순으로 무겁다고 가정했을 때, (A, C)가 함께 탈 수 있는데 (A, D)가 함께 타면 문제가 생기지 않냐고 생각할 수도 있다. (B, D)는 함께 탈 수 있는데 (B, C)는 함께 못 타는경우가 있을 수 있기 때문이다....

2024-09-15 · 1 min · 129 words

42884

날짜: 2022년 1월 31일 오후 5:51 코드 Algorithm/42884.py at main · Junroot/Algorithm 풀이 도착 지점이 빠른 구간 순으로 접근하면 풀이가 쉬워진다. 자신보다 먼저 끝나는 구간이 존재하지 않기 때문에 해당 구간의 마지막 위치에 카메라를 두고, 해당 위치를 지나는 모든 구간은 새로 카메라를 둘 필요가 없어진다. 따라서 이 방법이 최소의 카메라 수를 가지게 된다는 것을 보장할 수 있다.

2024-09-15 · 1 min · 56 words

42883

날짜: 2022년 1월 31일 오후 5:51 코드 Algorithm/42883.py at main · Junroot/Algorithm 풀이 가장 앞 자리수가 큰 것이 중요하다는 점을 파악하면 해결하기 쉽다. k개를 지운다는 뜻은 (number의 길이) - k 개의 숫자를 선택해서 수를 만든다고 접근하는 것이 나에게는 더 쉬웠다. n개의 숫자 중 k개의 숫자를 선택해야될 때, 제일 앞 자리 숫자는 [0, n - k) 범위의 인덱스 중에 선택해야된다. 따라서 이 범위 중에 가장 큰 수를 선택하면 된다. 사실, 풀이법은 금방 생각했는데 처음에 재귀 함수를 이용하여 구현을 했다가 계속해서 시간 초과가 발생했다....

2024-09-15 · 1 min · 121 words

42862

날짜: 2022년 1월 31일 오후 5:51 코드 Algorithm/42862.py at main · Junroot/Algorithm 풀이 가능하면 자신의 앞 사람의 옷을 빌리도록 시도하게 구현했다. 이렇게하면, 서로 빌리려는 사람이 겹치는 경우가 사라진다. 주의해야될 점은 lost와 reserve의 정보가 번호 순서대로 들어오지 않을 수 있기 때문에 정렬을 해야된다.

2024-09-15 · 1 min · 42 words

42861

날짜: 2022년 1월 31일 오후 5:51 코드 Algorithm/42861.py at main · Junroot/Algorithm 풀이 최소의 비용으로 연결하기 위해서는 n - 1개의 다리만 있으면 된다는 점을 파악해야된다. 나는 가장 짧은 간선부터 선택해보면서 사이클이 발생하지 않도록만 하면 최소 비용으로 연결이 될 것이라고 생각했다. 이를 위해서 최소 값을 찾아서 꺼내기 쉬운 우선순위 큐를 사용해봤다. 사이클이 발생하는지 확인하는 방법에 대해서 고민을 좀 했었다. 내가 사용한 방법은 서로 연결되어 있는 섬들의 집합을 ‘그룹’이라고 정의하고, 그 그룹을 대표하는 섬 하나를 ‘부모(parent)‘라고 정의했다....

2024-09-15 · 1 min · 132 words

42860

날짜: 2022년 1월 31일 오후 5:50 코드 Algorithm/42860.py at main · Junroot/Algorithm 풀이 문제를 수평 이동과 수직 이동으로 크게 나눌 수 있다. 수직 이동 수직 이동에 대한 처리는 그렇게 어렵지 않다. 알파벳이 26개인것만 알고 있다면. 수평 이동 수평 이동에 대한 처리에서 놓쳐서는 안되는 경우가 있다. 오른쪽으로 이동했다가 왼쪽으로 쭉 이동하는 경우가 더 짧을 수도 있다 라는 점이다. 나는 이를 해결하기 위해 2가지 문제로 나눠서 풀었다. 그림으로 표현하면 다음과 같다. 모든 연속된 ‘A’ 구간 찾기 이 부분은 리스트를 처음부터 끝까지 한 번만 스캔해서 찾아냈다....

2024-09-15 · 1 min · 129 words

42842

날짜: 2022년 1월 31일 오후 5:51 코드 Algorithm/42842.py at main · Junroot/Algorithm 풀이 일단 내가 푼 방법은 문제에서 의도한 방법은 아닌 것으로 보인다. brown + yellow = (가로) * (세로) yellow = ((가로) - 2) * ((세로) - 2) 라는 식을 적어 놓은 뒤 이차방적식으로 문제를 풀면 O(1)으로 문제 풀이가 가능하다. 문제 의도인 완전 탐색으로 문제를 풀어도, 위 두 개의 식을 이용할 수 있을 것으로 보인다. def solution(brown, yellow): sum = brown + yellow for h in range(1, brown + yellow + 1): if sum % h == 0: w = sum // h if yellow == (w - 2) * (h - 2): return [w, h]

2024-09-15 · 1 min · 107 words

42840

날짜: 2022년 1월 31일 오후 5:51 코드 Algorithm/42840.py at main · Junroot/Algorithm 풀이 각 수포자의 점수 구하기 1등 수포자들 구하기 이렇게 2개의 소문제로 나눌 수 있다. 1번 문제는 약수를 이용하면 쉽게 점수를 구할 수 있다. 각 수포자들은 일정한 주기의 찍기 패턴을 가지고 있다. 1번 수포자는 주기가 5, 2번 수포자는 8, 3번 수포자는 10이다. (문제 번호) % (수포자의 패턴 주기)를 하면 수포자가 패턴의 몇 번째를 사용했는지 파악할 수 있게된다. 2번 문제는 먼저 최대 점수를 구하고 최대 점수에 해당하는 사람들을 전부 찾는 방식으로 구현했다....

2024-09-15 · 1 min · 82 words

42839

날짜: 2022년 1월 31일 오후 5:51 코드 Algorithm/42839.py at main · Junroot/Algorithm 풀이 종이 조각으로 만들 수 있는 모든 수 구하기 만들어진 수 중에 가장 큰 수 이하의 모든 소수 구하기 소수 리스트에 만들어진 수가 포함된 것의 개수 구하기 이렇게 3가지 소문제로 나눴다. 이렇게 접근한 이유는 숫자마다 소수인지 검증하는 과정을 매번 계산하는 것이 비효율적이라고 생각했기 때문이다. 1번 문제의 경우 파이썬의 itertools라는 모듈에 permutations 함수를 사용해도되지만 이번에는 모든 순열을 구하는 함수를 직접 구해봤다....

2024-09-15 · 2 min · 259 words

42748

날짜: 2022년 1월 31일 오후 5:51 코드 https://www.notion.so 풀이 복잡한 로직이 없어서 쉽게 풀 수 있다. 인덱스 i-1부터 j-1까지 리스트를 자른 다음 정렬하고, k-1번째 인덱스의 값을 찾으면 된다. 문제에서 i, j, k를 1번부터 세는 것에 유의해야된다.

2024-09-15 · 1 min · 36 words

42747

날짜: 2022년 1월 31일 오후 5:51 코드 Algorithm/42747.py at main · Junroot/Algorithm 풀이 발표한 논문의 수가 1000편이하기 때문에, h=1000부터 하나씩 내려오면서 가능한지 확인해도 처리속도가 빠를 것이라고 생각이 들었다. 이 때, h값을 하나씩 줄이면서 전 단계에서 세었던 논문의 개수를 다시 셀 필요가 없을 것으로 보였다. citations를 역순으로 정렬한 뒤, h를 1씩 줄이고 h값을 만족하는 논문의 수가 h값 이상 인 경우에 그 h를 반환하도록 구현했다. 다른 사람의 풀이를 봤는데 너무 충격적이여서 여기에도 남겨본다....

2024-09-15 · 1 min · 125 words

42746

날짜: 2022년 1월 31일 오후 5:51 코드 Algorithm/42746.py at main · Junroot/Algorithm 풀이 두 수 a,b가 있을 때, a*(10^len(b)) + a > b*(10^len(a)) + a이면 최대값은 항상 a가 b보다 먼저 온다는 것을 증명할 필요가 있다. 따라서, a와 b를 이어붙이고 뒤집어본 다음 더 큰 경우의 순서대로 수가 나열되면 가장 큰 값이 나온다는 뜻이다.

2024-09-15 · 1 min · 52 words

418 I'm a teapot

서버가 찻주전자이기 때문에 커피 내리기를 거절했다는 것을 의미한다. 이 오류는 1998년 만우절 농담이었던 하이퍼 텍스트 커피 포트 제어 규약(Hyper Text Coffee Pot Control Protocol)의 레퍼런스다.

2024-09-15 · 1 min · 25 words

4153

편집 시간: 2022년 2월 7일 오후 8:37 코드 Algorithm/4153.py at main · Junroot/Algorithm 풀이 딱히 생각할 필요없이 피타고라스 정리로 비교하면 된다.

2024-09-15 · 1 min · 21 words

414 URI Too Large 해결

문제 상황 GET 요청에 query가 길어지면서, URI가 길어지니 Nginx에서 414 URI Too Large가 발생했다. 원인 분석 Nginx에는 large_client_header_buffers number size 설정값이 존재한다. 요청 헤더를 읽을 때 사용할 버퍼의 개수와 크기를 설정한다. request line이 버퍼 하나의 크기를 초과하면 414 응답이 발생한다. requet line: 요청 메시지의 첫번 째 줄 예시: GET /software/htp/cics/index.html HTTP/1.1 요청 헤더가 버퍼 하나 크기를 초과하면 400 응답이 발생한다. 기본값은 number=4, size=8k 다. 해결 방법 large_client_header_buffers 설정 값을 조절하여 해결한다....

2024-09-15 · 1 min · 97 words

4-클래스, 객체, 인터페이스

클래스 계층 정의 코틀린 인터페이스 코틀린 인터페이스는 자바 8 인터페이스와 비슷하다. 상위 클래스나 상위 인터페이스에 있는 프로퍼티나 메소드를 오버라이드할 때는 override 변경자를 붙여줘야 된다. 실수로 상위 클래스의 메소드를 오버라이드하는 경우를 방지해준다. 한 클래스에서 두 인터페이스를 함께 구현했을 때, 같은 디폴트 메소드가 있다면 컴파일 오류가 발생한다. 이 경우는 하위 클래스에 직접 구현하게 강제한다. 상위 타입의 메소드 호출하는 방식은 아래를 참고한다. class Button : Clickable, Focusable { override fun click() { println("I was Clicked") } override fun showOff() { super<Clickable>....

2024-09-15 · 8 min · 1668 words

4-컴포넌트 원칙

컴포넌트 컴포넌트: 시스템의 구성 요소로 배포할 수 있는 가장 작은 단위. 자바의 jar, 루비의 gem, 닷넷의 DLL… 여러 컴포넌트를 서로 링크하여 실행 가능한 단일 파일로 생성할 수 있다. 또는, 여러 컴포넌트를 서로 묶어서 .war 파일과 같은 단일 아카이브로 만들 수도 있따. 또는 컴포넌트 각각을 .jar나 .dll같이 독적으로 로드할 수 있는 플러그인이나 .exe 파일로 만들어서 독립적으로 배포할 수도 있다. 컴포넌트의 간략한 역사 소프트웨어 개발 초창기에는 메모리에서의 프로그램 위치와 레이아웃을 프로그래머가 직접 제어했다....

2024-09-15 · 6 min · 1225 words