생성일: 2022년 1월 6일 오전 1:25for-else문 사용
생성일: 2022년 1월 6일 오전 1:25
생성일: 2022년 1월 6일 오전 1:25내가 구현한 코드에서는 중복된 수(num)가 있더라도 모두 sumList에 모두 넣고 for문으로 k번째로 큰 수를 찾는 구조라면 모범 정답에서는 set 자료구조를 이용하였다.set에는 중복된 값이 들어가지 않는다. ⇒ 중복된
생성일: 2022년 1월 6일 오후 4:35
생성일: 2022년 1월 6일 오후 4:59내가 구현한 코드에서는 딕셔너리를 사용하여 두 수의 합을 key, 빈도수를 value로 저장하였다.모범 답안에서는 어레이를 사용하여 어레이의 인덱스가 두 수의 합이고 값이 빈도수를 나타내도록 구현되었다.
생성일: 2022년 1월 6일 오후 5:12내가 구현한 코드에서는 정수의 모든 자릿수의 합을 구할 때, 해당 정수를 string으로 변환하고 for문을 돌려서 각 자릿수를 더하여 구하는 구조이다.모법 답안에서는 해당 정수를 10으로 나눈 나머지를 더하고 10으로 나눈
생성일: 2022년 1월 7일 오후 5:17n까지의 일차원 배열을 만들고 각 인덱스가 소수인지를 검사해야하는 수이다.이때 모든 칸을 True로 하여서 기본적으로 모든 수가 소수인것으로 간주하고 시작한다. (반대도 가능)반복문을 돌면서 True를 만나게 되면(소수) 해당
생성일: 2022년 1월 7일 오후 6:04입력받은 수를 뒤집는 함수인 reverse(x)에서 나는 정수 x를 스트링으로 바꾼 후 리스트로 만들어서 파이썬에서 제공하는 어레이 함수 중 하나인 reverse()를 이용하여 수를 뒤집었다.7300 과 같은 수를 뒤집으면 0
생성일: 2022년 1월 8일 오후 9:40모범 답안에서는 주사위를 굴려서 나온 숫자를 리스트에서 접근하여 사용하지 않고 a, b, c라는 변수에 각각 저장하여 편리하게 사용하였다.내가 쓴 코드에서는 주사위 결과값을 numList라는 배열에 저장하고 필요할 때마다 인덱
생성일: 2022년 1월 8일 오후 9:49
생성일: 2022년 1월 11일 오후 4:58
생성일: 2022년 1월 11일 오후 4:58
생성일: 2022년 1월 11일 오후 4:58
생성일: 2022년 1월 11일 오후 4:58내가 구현한 코드에서는 파이썬 문법을 활용하여 두 리스트를 더하고 sorting 했지만 답안에서는 두 변수를 활용(인덱스를 나타냄)하여 한 칸씩 크기를 비교하고 결과 리스트에 하나의 아이템 씩 추가하는 방식을 사용하였다.
생성일: 2022년 1월 11일 오후 4:58내가 구현한 코드에서는 주어진 배열이 클 때 시간초과 오답처리가 되었다.why?나는 이중 반복문을 돌면서 처음 지정된 아이템을 기준으로 연속되는 아이템들을 더했을 때 m보다 커지면 계산했던 값들을 전부 버리고 다시 다음 아이
생성일: 2022년 1월 11일 오후 4:59
생성일: 2022년 1월 13일 오후 6:15내가 구현한 코드에서는 파이썬의 리스트 기능을 이용하여 다이아몬드 모양만큼 잘라내여 해당 부분만큼 합하는 구조이다.모범 답안에서는 s와 e라는 변수로 잘라낼 부분의 시작점과 끝 지점 인덱스를 저장하고 n의 절반보다 위쪽에서는
생성일: 2022년 1월 13일 오후 6:40
생성일: 2022년 1월 13일 오후 6:53내가 구현한 코드에서는 상하좌우의 값들을 확인하기 위해 길게 if문이 작성되었지만 모범답안에서는 all()을 이용하여 괄호 안의 모든 수식이 참임을 조사하는 코드를 간단하게 작성하였다.
생성일: 2022년 1월 14일 오후 4:57내가 구현한 코드에서는 9 x 9 스도쿠 판에서 3 x 3 사이즈의 작은 구역을 이중 for문 속에서 조건문을 걸어서 확인하였다.모범 답안에서는 4 중 for 문을 사용하여 조건문의 수를 줄이는 방식으로 3 x 3 사이즈의
생성일: 2022년 1월 14일 오후 5:22
생성일: 2022년 1월 14일 오후 5:27
생성일: 2022년 1월 14일 오후 5:27내가 구현한 코드는 입력 데이터가 많을때(k가 클 때) 실행 시간이 매우 길어진다.반면 모범 답안에서는 Binary Search를 이용하여 범위를 절반으로 줄여가며 탐색을 하기 때문에 효율적이다..txt 파일에서 숫자들을 불
생성일: 2022년 1월 14일 오후 5:27이분탐색을 활용한다.(결정 알고리즘)가능한 dvd의 최소 용량은 1부터 노래들을 전부 한 dvd에 담은 sum(music) 까지이다.이 구간을 절반으로 나눠가며 확인한다.Count 함수는 특정 capacity(용량)인 dvd
생성일: 2022년 1월 17일 오후 6:00Count 함수는 특정 distance(거리)를 두면서 말들을 배치할 때 마구간에 최대 몇마리의 말들이 들어갈 수 있는지를 구하는 함수이다.
생성일: 2022년 1월 18일 오후 5:32그리디 문제의 핵심은 정렬이다.회의가 최대한 많이 진행되도록 하기 위해 비교해야할 것은 회의가 끝나는 시간이다. 따라서 튜플로 회의 시작 시간과 끝 시간을 담고 리스트에 저장한다.해당 리스트를 끝나는 시간을 기준으로 오름차순
생성일: 2022년 1월 18일 오후 6:25사람들을 키 순서로 정렬한다.반복문을 돌게 되는데, 중요한 점은 키를 기준으로 정렬을 시킨 상태이기 때문에 키를 비교하는 과정은 배제하고 자신보다 키가 큰 사람들과의 몸무게 비교만을 통해서 자신보다 몸무게가 큰 사람이 없는
생성일: 2022년 1월 21일 오후 4:50
생성일: 2022년 1월 21일 오후 5:12
생성일: 2022년 1월 22일 오후 6:04
생성일: 2022년 1월 22일 오후 6:33
생성일: 2022년 1월 24일 오후 5:23아이디어주어진 숫자 리스트에서 앞에서부터 하나씩 빼서 res에 넣는데, res에 들어갈 새로운 숫자가 기존에 res에 들어있던 마지막 숫자보다 크다면 해당 숫자 (res-1)를 계속 제거하면서 넣는다.내가 구현한 코드와 작동
생성일: 2022년 1월 24일 오후 5:23
생성일: 2022년 1월 24일 오후 5:23아이디어res 문자열에 숫자는 곧바로 추가하고 연산자는 stack에 넣는다.해당 연산자보다 연산 우선 순위가 높거나 같은 연산자들이 stack에 있다면 stack에서 빼고 res 에 추가한다.‘)’ 를 만났을 때에는 stac
생성일: 2022년 1월 25일 오후 7:58
생성일: 2022년 1월 27일 오후 5:32
생성일: 2022년 1월 27일 오후 5:58차이점내가 구현한 코드에서는 for i,v in pateintsQ: 를 통해 cur보다 큰 값이 존재하는지 검사하는 코드를 반복문으로 직접 구현하였다.모범 답안에서는 해당 부분을 any() 함수를 사용하여 구현하였다.
생성일: 2022년 1월 28일 오후 6:46
생성일: 2022년 1월 28일 오후 7:12
생성일: 2022년 1월 29일 오후 5:52기본적인 로직은 같다.딕셔너리 안에 key값이 있는경우 value에 1을 더해주고 없는 경우에는 해당 key를 딕셔너리에 추가하고 value를 1 로 설정해주는 부분에서 위의 두 코드는 같은 역할을 한다. (get()을 사
생성일: 2022년 1월 29일 오후 6:11
생성일: 2022년 1월 29일 오후 6:11파이썬의 heapq는 기본적으로는 최소힙만 제공한다.따라서 최대힙의 기능을 원한다면 넣는 아이템의 부호를 바꾸어서(여기서는 음수로 만들어서) 넣는다면 최대힙처럼 최소힙을 사용 할 수 있다.
생성일: 2022년 1월 29일 오후 6:18
생성일: 2022년 1월 29일 오후 6:18
생성일: 2022년 1월 29일 오후 6:18DFS의 개념인 밑으로 쭉 탐색하는 형태이다.1부터 시작하여 n 까지의 수들을 각각 출력할 것인지, 하지 않을 것인지에 맞게 2가지 방향으로 트리를 구성한다. 출력 여부는 n+1 크기의 배열(0번째 인덱스는 편의상 사용X)
생성일: 2022년 2월 1일 오후 7:36기본적인 로직은 같다.내가 구현한 코드에서는 부분집합을 구하고 구해진 부분집합의 원소들의 합을 구하는 절차이지만 모범답안에서는 부분집합을 구하는 것이 아니라 원소들의 합을 곧바로 구하여 비교하였다.두 부분집합의 합이 같다는 것
생성일: 2022년 2월 3일 오후 6:15문제점 : n이 높아지면 실행 시간이 너무 길어져서 오답 처리가 된다.Cut Edge Tech (가지치기)내가 구현한 코드에서의 문제점인 실행시간을 대폭 줄일 수 있도록 조건문을 걸어서 정답의 조건에서 벗어난 경우 곧바로 함수
생성일: 2022년 2월 3일 오후 10:51m 크기의 리스트(res)를 선언한다. (예를들어 m이 2라면 2칸의 리스트가 생성되고 각 칸에는 중복순열이 될 숫자가 한개씩 들어간다)재귀 함수를 돌게 되는데 DFS 함수의 매개변수인 index는 앞서 만든 크기 m의 리스
생성일: 2022년 2월 5일 오후 11:41
생성일: 2022년 2월 5일 오후 11:43
생성일: 2022년 2월 6일 오후 7:59n = 4, k = 16 기준을 예시로 들자면, 모든 가능 한 경우의 순열을 검사해야 하는 것은 맞다. (예를들어 1,2,3,4, 1,3,2,4, .... , 4,3,1,2)다만, 검사하는 방식에 있어서 위의 순열들을 전부 두
생성일: 2022년 2월 6일 오후 8:44기본적인 로직은 같다.내가 구현한 코드에서는 if L==0: 을 사용하여 조건문을 통해 res의 0번째 인덱스(트리의 level 0)일 때는 n까지의 수를 다 넣고 그 다음 부터는 resL-1+1부터 n까지의 수를 넣는 구조이
생성일: 2022년 2월 7일 오후 5:02
생성일: 2022년 2월 7일 오후 5:54
생성일: 2022년 2월 8일 오후 5:48
생성일: 2022년 2월 10일 오후 2:20
생성일: 2022년 2월 10일 오후 2:20
생성일: 2022년 2월 10일 오후 2:20추가 왼쪽에 놓일 경우 sum에 추 무게를 더해주고 오른쪽에 놓일 경우에는 sum에 추 무게를 뺀다. 아예 해당 추를 안놓는 경우에는 그냥 sum을 그대로 넘겨준다.모든 추들을 왼, 오, 놓지 않는 경우 ⇒ 이렇게 3가지 경
생성일: 2022년 2월 11일 오후 4:40
생성일: 2022년 2월 12일 오후 3:34
생성일: 2022년 2월 12일 오후 4:11내가 구현한 DFS함수에서는 pre 파라미터를 통해 L번째 숫자를 즉시 문자로 변환하지 않고 다음으로 넘겨서 L+1번째 숫자와 합쳐서 문자로 변환하는 경우의 수를 구했다.모범 답안에서는 1부터 26까지의 수(문자로 치면 A~
생성일: 2022년 2월 14일 오후 3:45BFS문제는 큐(queue)를 이용해서 해결한다.상태트리를 그리면 다음과 같다.위의 상태 트리대로 큐에 한 노드씩 넣어가면서 dequeue하고 연결된 하위 노드를 다시 큐에 넣는 작업을 거친다.위와 같이 배열(dis)을 만들
생성일: 2022년 2월 14일 오후 4:37격자판의 중앙 좌표부터 큐에 넣는다.dequeue를 해서 나온 좌표의 상하좌우 노드(좌표)를 큐에 다시 넣고 이를 반복한다.ch 배열을 통해 이미 검사한 노드인지 체크한다.반복문이 끝나는 시점은 L(레벨)이 n//2일 때이다
생성일: 2022년 2월 15일 오후 3:53
생성일: 2022년 2월 15일 오후 4:26
생성일: 2022년 2월 17일 오후 2:47
생성일: 2022년 2월 17일 오후 3:47내가 구현한 코드에서는 BFS사용모범 답안 (DFS)기준나는 L과 cnt 를 통해 총 단지 수와 각 단지별 집의 수를 따로 구하였다.모범 답안에서는 res 배열에 집의 수를 저장하였고, 이는 곧 len(res)는 단지 수를
생성일: 2022년 2월 18일 오후 2:52
생성일: 2022년 2월 18일 오후 3:03모범답안에서는 DFS로, 나는 BFS로 구현혹시 인터넷 사이트(백준 등)에서 문제를 풀고 채점을 받을 때(재귀문제) 타임 리미트 오류가 발생한다면 이 코드를 추가하면 해결 될 수도 있다.
생성일: 2022년 2월 19일 오후 3:35
생성일: 2022년 2월 19일 오후 4:39내가 구현한 코드는 각 사다리의 경로를 탐색해서 당첨인 사람을 찾는 로직이지만 모범 답안에서는 거꾸로 당첨칸에서부터 위로 올라오면서 어떤 사다리가 당첨이 될 사다리인지를 찾는 로직이다.모범 답안처럼 하는 것이 당첨이 아닌 사
생성일: 2022년 2월 20일 오후 8:48내가 구현한 코드에서는 피자 가게들의 조합을 파이썬의 itertools의 combinations을 import하여 편리하게 구하였다. (실전에서 해당 패키지를 사용하지 못할 수도 있기 때문에 직접 DFS로 조합을 구하는 방법
생성일: 2022년 2월 22일 오후 2:39이 문제는 동적 계획법을 사용하면 쉽게 해결 가능하다.동적 계획법이란 문제를 아주 직관적으로 답을 찾을 수 있을 정도록 잘게 쪼개서 해결한 후 규칙을 찾아내서 큰 규모로 확장시킨 문제 또한 풀 수 있도록 하는 테크닉일종의 점
생성일: 2022년 2월 22일 오후 2:39메모이제이션이란, 재귀를 호출하게 되면 같은 계산을 여러번 해야하는 경우가 생길 수 있다.관련 내용 \[https://www.notion.so/7-Recursion-155324f5aa204592bbcf5d0c3f2
생성일: 2022년 2월 22일 오후 2:39
생성일: 2022년 2월 23일 오후 4:43
생성일: 2022년 2월 23일 오후 5:09i 번째 값 위치에서 가장 긴 수열은 첫번째 값부터 i-1번째 값들(j) 중에서 i보다 값이 작으면서 가장 긴 수열을 가진 값을 찾고, 해당 값에서의 수열 최대 길이에 1을 더한 것이다.
생성일: 2022년 2월 23일 오후 6:29문제는 달라보이지만 최대 부분 증가 수열과 같은 문제이다.why? 주어진 숫자들 중에서 최대 증가 수열에 해당되는 값들에서 가장 선을 많이 연결할 수 있기 때문이다.
생성일: 2022년 2월 24일 오후 3:04넓이, 무게 중에 한개의 요소를 기준으로 내림차순으로 정렬을 해야 한다.
생성일: 2022년 2월 24일 오후 3:26기본적인 로직은 같다.각 칸을 반복문을 통해 돌면서 자신의 위와 왼쪽을 비교하고 그 중에서 작은값과 자신의 값을 더한 것을 dy에 담는다.모범 답안에서는 우선 0번째 행과 열을 전부 먼저 dy에 채워 넣었다. (이렇게 하면
생성일: 2022년 2월 24일 오후 3:48
생성일: 2022년 2월 25일 오후 4:04이 문제는 같은 종류의 보석을 여러번 넣을 수 있다는 가정 하에 짜여진 코드이다.로직보석의 정보를 하나씩 가져오게 되는데, 중요한 아이디어는 해당 보석을 가방에 넣는다고 가정하는 것이다.dy리스트에서 dyj 는 가방에 j무게
생성일: 2022년 2월 25일 오후 4:38
생성일: 2022년 2월 26일 오후 4:50이전의 냅색 문제와의 차이점 ⇒ 중복 선택 불가능 ⇒ 이차원 배열을 만들어서 해결해야함 (값을 중복해서 덮어 쓸 수 없기 때문)중복 선택이 없어야 하기 때문에 dyi과 비교하는 것이 아니라 이전에 입력받은 문제를 기준으로 비
생성일: 2022년 2월 27일 오후 4:25플로이드 워샬 알고리즘은 3중 for문을 통해 해결한다. 여기서 i는 출발위치, j는 도착 위치이다. k는 거쳐가는 위치이다. 따라서 disi+disk 는 i⇒k⇒j 에 해당되는 경로에서의 비용 합이다.
생성일: 2022년 2월 28일 오후 5:43이번 문제에서는 각 노드간의 연결이 양방향이기 때문에 disa = 1 뿐만 아니라 disb = 1처럼 양방향으로 값을 넣어주어야 한다.
생성일: 2022년 3월 1일 오후 9:49내가 구현한 코드는 DFS를 활용하였다.연결된 노드들을 탐색하면서 정점(연결이 끊긴 노드)를 만나면 res의 앞에 넣는 형식이다.모범 답안은 Queue를 사용하였다.degree 리스트에는 각 노드들의 진입 차수를 저장한다.진입