전체 글 34

[코드트리] 연결리스트 이해하기

연결리스트와 비교되는 것은 보통 배열으로 연결리스트를 배우기 전에 배열로 모두 구현하기 때문이다.배열을 배우면 가장 큰 문제는 중간에 값을 넣으면 그 중간+1 index부터 end(-1)까지 한칸씩 밀리기에 O(n)이 걸린다는 점으로 연결리스트는 값을 앞에 넣던 뒤에 넣던 즉, 삽입과 삭제가 O(1)이 걸린다.또한 배열은 한 번 size로 선언하면 늘릴수도 줄일(실질적으로는 메모리 사용) 수도 없기 때문에 한 번 size를 선언하면 정적이다하지만 연결리스트는 동적이라는 점이 크게 다르다.연결리스트에서 값이 들어가는 것이 Node, 그 값들이 연결된 것이 link로 불린다.이에 따라 Node가 있고 이에 대응하는 Link가 다음 Node를 가리키는 것 반복되는 것이 기본적인 연결리스트이다.이 Node1의..

Algorithm 2026.06.22

[코드트리] 갭체크를 통한 한 달 비포 & 애프터 비교 후기(with. 이진트리)

일단 이번에 한 갭체크 결과를 봐보자6월 15일(이 글을 쓰는 날짜)의 갭체크다여기서 '2차원 배열'개념에서 나오는 문제는 2차원이 나오는 input이 R,C,K가 들어오는 문제가 2차원 배열인데첫 갭체크때는 넘어갔던 문제다 이후에도 풀었는데 해결하지 못하여 이후 총 3번 트라이로 풀었다그리고 그 다음인 저번 갭체크(6/13) 때에 짰던 코드이다#include #include using namespace std;int N, R, C, K,res;vector> A;bool flag=false;int main() { cin >> N; A.resize(N, vector(N)); for (int i = 0; i > A[i][j]; cin >> R >> C >> K; vectorknn;..

Algorithm 2026.06.15

[코드트리] 나를 성장시키는 알고리즘 북마크: Aha!에서 완성까지 with. 연결리스트와 정렬

codetree는 각 단계마다 상세한 설명과 이에 따른 문제를 풀 수 있다는 장점이 있다아직 풀지 못한 문제가 하나라도 있으면 확인이 가능하지만 모두 풀면 Node가 완전히 파란색으로 칠해진다.이에 따라 상세하게 구분한 것은 오히려 다시 찾아올때 복잡함을 불러온다'나중에 풀어봐야지'했던 문제는 이로 인해 다시 찾아오기 힘든 문제가 되어버린다내가 헷갈렸던/어려워했던/개념적으로 중요했던 문제가 이전에 무엇이었는지 찾으려고 해도 출력 결과를 예측하는 문제는 구분이 안되고(출력결과 N형식) 문제 이름만 보고 딱 알아내기 어려운 경우도 있다첫 이미지에서 Node 하나의 Lesson이 이렇게 긴 경우도 있다 그러면 어떻게 돌아와야하는가?이에 따라 상세하게 알려주되 다시 back이 가능하도록 하는 것이 북마크 기능이..

Algorithm 2026.06.08

[코테 공부] 잔디 심기로 재귀와 연결리스트 1일 1문제 습관 형성하기 (feat. 코드트리)

codetree를 github에 연동한 것이 5월 22일인데 과거 백준의 solved.ac의 문제 풀면 채워지는 스트릭의 생각이 다시 났다물론 백준의 스트릭도 github에서 따온 것으로 생각되지만 말이다CodeTreeProblemSolving에 codetree에서 푼 것을 기록 중인데 코드 문제가 아닌 출력 결과를 예상하는 문제임에도 .md파일만을 통해 잔디가 채워지는 것이 꽤 새롭다고 생각했다 출력 결과 문제만 주구장창 풀었는데 github 잔디가 하나도 안심어있으면 슬플 학생들을 위한 배려라 생각된다개인적으로 codetree에서 trail안에도 Ch가 있는데 여기까지 폴더가 분기되어있으면 하는 생각이 있다 다른 문제는 어떤 유형의 문제인지 확인 가능하지만 '출력 결과 n'문제는 .md에 들어가 커리..

Algorithm 2026.06.01

[코드트리] 배열과 재귀 알고리즘 약점 극복 학습 후기

이번 주차에 배열은 마무리했고 이와 함께 다음으로 재귀로 바로 넘어갔다갭채크를 하지 않았으면 배열과 관련해 바로 넘어갔을 것이다. 2차원 배열과 관련된 기존의 부족했던 점과 배열에서 ++arr[index]를 하는 것과 같은 참신한 예제를 얻을 수 있었다.Ch7-5, 배열 놀이아래의 코드로 풀었는데 num==2의 경우 cout이 j+1인데 arr[j]로 했던 문제, flag처리를 반대로 해서 0이 계속 출력되었던 문제가 있었다int main() { int n, q, arr[100] = {}, num, res2 = 0, ask, ask2; bool falg = false; cin >> n >> q; for (int i = 0; i > arr[i]; } for (int i = ..

Algorithm 2026.05.25

코드트리) 갭체크 및 하면서 느낀점

코드트리 청약 통장 챌린지가 시작되어서 참여하게되었다 cf) 이 글에서는 당시 풀었을때 어떤 부분에서 막혔는지, 어떻게 풀었는지를 주로 하여 다룬다 '당시'라는 것은 당시가 지나면 떠오르지 않기 때문에 따로 vscode에 그 부분을 주석과 함께 남겼다가 이후 글을 쓰는데 활용하는 형식으로 한다codetree로 갭체크 했을 때 다음과 같은 결과가 나왔다갭체크를 test하던 당시 어떤 문제에서 i딱히 많이 정리하지도 않고 앞으로만 나아갔기에 기본은 알지만 당시 배운 당시의 심화 단계를 까먹었을 수도 있기에 1차원 배열부터 다시 시작하기로 했다 갭체크 후 본래 for문을 일반적으로 쓰는 방법 말고 고수들의 이상한 for문을 어떻게 사용하는 것인지 궁금해서 for먼저 해보려했는데 생각보다 codetree의 단계..

Algorithm 2026.05.18

선형대수)LU분해와 가우스 소거법 : 행렬 L은 왜 그렇게 만들어질까?

1)가우스 소거법연립방정식을 풀 때, 우리는 보통 미지수를 하나씩 소거해 나가며 해를 구한다.이를 가우스 소거법이라하고 선형대수에서도 이 방법이 사용된다.만약 x+y+z=6 2x+3y-z=5 2x+3y+3z=17가 있으면 목표는 미지수 x, y, z를 구하는 것일 것이다.선형 대수에서는 연립방정식을 어떻게 풀까 다음과 같은 선형연립방정식이 있다고 해보자.[ 1 1 1| 6] R1[ 2 3 -1| 5] R2[ 2 3 3| 17] R3즉위 행렬을 증강 행렬 [A|b]형태로 본다.먼저 1열의 미지수를 없애기 위해 R1을 기준으로 아래 행들을 제거한다.각 식을 R1, R2, R3이라 한다면 R1과 R2 그리고 R1과 R3으로 말이다.R1과 R3(R3-2R1), R3과 R1(R3-2R1) 으로 소거..

카테고리 없음 2025.05.24

python)pygame, 마우스 처리, 클릭과 움직임 감지 및 좌표 얻어오기

pygame에서 키보드 및 마우스 처리는 기본적으로 2가지 방법이 있다.첫번째 방법은 pygame.event.get()의 타입을 인식하는 것, 두번째는 다른 변수에 기능을 하는 함수를 할당하는 방법이다.이 글에서는 마우스 처리에 대해 알아보자.이벤트상세pygame.MOUSEBUTTONUP마우스 버튼을 누름pygame.MOUSEBUTTONDOWN마우스 버튼을 땜pygame.MOUSEWHEEL마우스 휠 감지pygame.MOUSEMOTION마우스 움직임 감지1) pygame.event.get()import pygame,sysLIGHT_GRAY=(200,200,200);LBLUE=(0,192,255)BLUE=(0,0,255);RED=(255,0,0)BLACK=(0,0,0);GREEN=(0,255,0)screen..

python) pygame,키보드 처리(대소문자 처리) (2)

이전 글에서 Caps Lock키로 인해 대소문자 구분이 어렵다고 하였다. 그 이유는 실행시에 Caps Lock키가 켜져있는지 켜져있지 않은지를 알 수 없기에 이후에 누르는 Caps Lock키를 %2해서 판별한다고 해도 반대로 판별할 가능성이 있기 때문이다.이번 글에서는 이 Caps Lock키가 켜져있는지 꺼져있는지 판별하는 것을 포함하여 pygame에서 대소문자 구분 방법에 대해 정확히 다루어보려한다. 이를 시용하는 예는 코드 실행 중에 퍼즐을 위한 문장 등을 입력 할 수도 있기 때문이라고 생각한다. import pygame만 사용하여 Caps Lock키를 판별하면 생기는 문제점import pygame,sysLIGHT_GRAY=(200,200,200)LIGHT_MOSS_GREEN=(143,188,143)..

python) pygame,키보드 처리 (1)

pygame에서 키보드 및 마우스 처리는 기본적으로 2가지 방법이 있다.첫번째 방법은 pygame.event.get()의 타입을 인식하는 것, 두번째는 다른 변수에 기능을 하는 함수를 할당하는 방법이다.이 글에서는 키보드 처리에 대해 알아보겠다.공통) 키보드 상수키상수Function 키 (Fm/m=숫자)K_F1~K_F12숫자 키 (0~9)K_0~K_9알파벳 키 (A~Z && a~z)K_a~K_z( 대소문자 판별하지 못함)Esc 키 (ESC)K_ESCAPE` 키(백틱 키)pygame.K_BACKQUOTE- 키pygame.K_MINUS+ 키pygame.K_PLUS| 키pygame.K_BACKSLASHBackspace 키pygame.K_BACKSPACETab 키pygame.K_TAB{ 키pygame.K_LEF..