분류 전체보기 176

포인터.. 왜 쓸까?

내일 코어타임을 위해 포인터에 대해서 알아보았당Pointeraddress : the location of the memeory, where that memory livesvalue : the data stored at that location, what memory lives therepointer : the value of the address. It is pointing that location. int* px = &x; //px라는 정수형 포인터는 변수 x의 주소를 가리킴int y = *px; //y값은 px라는 포인터가 가리키는 값 *가 타입과 함께 쓰일 때는 해당 타입값을 가리키는 포인터*가 타입과 함께 쓰이지 않을 때는 역참조 (go and grab that value) why do we us..

정글 2025.04.18

Data-Structures Binary Search Tree Q4 - Post Order Iterative 풀이

오늘 코드 리뷰 상대가 스택 하나를 사용해 후위 순회를 구현한 코드를 올려주셔서 열심히 해석해보았다.덕분에 가장 어려웠던 문제를 이해할 수 있게 되었다 :D 문제 해석 : post-order(후위 순회)로 트리의 노드를 읽으시오.스택을 사용하시오 후위 순회란 :후위 순회 방문 순서는 다음과 같다.1. 왼쪽 서브트리2. 오른쪽 서브트리3. 자기 자신(root)이미지 출처:https://dongsik93.github.io/algorithm/2019/09/29/algorithm-theory-binarytree/ 손으로 그려보면 방문 순서를 도출해내는 건 쉽다. 하지만 코드로 구현하기가 어렵다.재귀로 풀면 점화식만 도출하면 되므로 쉬운데 스택을 쓰라니.. 구현 아이디어 떠올리기 :후위 순회의 성질을 잘 생각해..

정글 2025.04.17

Data-Structures Binary Search Tree Q1 - Level Order Traversal 풀이

* 4/17 발표를 위한 자료문제 해석 :트리가 주어졌을 때 노드들을 level별로 출력하라. 이 문제를 풀기 전에 두 가지 생각이 들었다.1. 왜 큐를 사용하라고 했나?2. 재귀호출로도 구현 가능? 이전 문제를 풀 때는 현재 노드의 자식 노드를 방문할 때 재귀 호출을 주로 사용했다.-> 자식 노드의 자식 노드로 깊이 탐색을 하여 base case에 다다르면 재귀 호출을 종료하는 식으로 top-down 구현 그런데 이번 문제에서는 너비 탐색을 해야 해서 재귀를 쓰면 안 된다.그럼 현재 노드의 자식 노드를 어떻게 방문?-> 큐에 같은 레벨의 노드들을 한꺼번에 넣어두고-> 큐에서 하나씩 꺼내면서 그 노드의 자식 노드를 또 다시 큐에 넣기-> 이 과정을 반복하면 큐의 FIFO 성질에 의해 같은 레벨의 노드들을..

정글/알고리즘 2025.04.16

[정글] c언어 특강

오늘 c언어 특강에서 들은 내용 간단 정리각 주제에 대해 자세하게 설명하기보다는 공부할 때 한 번 생각해볼만한 것들을 던져주신 것 같다.재귀 구현하노이탑 문제 점화식 : h(n) = 2*h(n-1) + 1 n개의 원판을 움직이기 위해서는1) n-1개의 원판을 1번 기둥에서 2번 기둥으로 옮기고2) 가장 큰 1개의 원판을 1번 기둥에서 3번 기둥으로 옮기고3) 다시 n-1개의 원판을 2번 기둥에서 3번 기둥으로 옮기는과정이 필요하기 때문이진 트리의 노드 개수를 구하는 문제참고) 트리 vs 그래프?트리는 사이클이 없고 모든 노드가 연결되어있는 그래프 점화식 : count(t) = count(t->left) + count(t->right) + 1struct{ struct* node left; struct..

정글 2025.04.16

정글 알럼나이 패널토크

Q. 정글 가치관몰입/동료학습/자기주도 인생의 절반은 기세다? 꾸준히 하기핀토스 끝나고 팀빌딩할 때 어수선한 분위기 등 신경쓰지 말고 해당 주차에 주어진 일 잘 해라 정글에서 주어진 과제를 구현하기 위해 혼자서 자료를 찾아보고 부딪혀보는 경험이 중요그 경험이 나중에 현업에서 공식문서를 보면서 문제를 해결하는 과정에 굉장히 도움이 됨 너무 완벽하게 하려 하지 말고 비교하지 말고 남들도 다 똑같다고 생각하기,,현업 일에 비하면 쉬운 일ㄹㄹ임 Q. ??핀토스 했던 게 도움된 경험? 현업에서의 복잡하고 거대한 코드를 해석하는 데 굉장히 도움이 되었기 때문에 핀토스 열심히 해라 같은 이유로 핀토스 도움 되었음.. 남이 짠 코드를 쉽게 해석할 수 있었던 경험이 있음. malloc 등 rbtree, malloc, 핀..

정글/회고 2025.04.12

[C언어] 기초 정리(2) - 포인터

1. 포인터int = 정수값 보관 변수float = 실수값 보관 변수포인터 = 주소값 보관 변수 포인터 타입의 크기64비트 컴퓨터들은 주소값 크기가 64비트-> 포인터는 메모리상에 위치한 특정 데이터의 (시작)주소값을 보관하는 변수이므로 포인터타입 크기는 항상 64비트?-> 맞음. 포인터 타입 크기는 뭘 가리키고 있냐가 아니라 그 cpu가 몇 비트짜리냐에 의해 정해짐 포인터 선언*를 붙여서 포인터를 정의// pointer p is pointing the int type data// pointer p holds the address where the value livesint* p;int *p; 포인터 할당&를 붙여서 어떤 데이터가 저장된 곳의 주소값을 얻어낼 수 있음p = &x; // p points t..

정글 2025.04.11

[C언어] 기초 정리(1) - Null문/형 변환/형 정의/배열

1. null문세미콜론을 제외하고 아무 기호도 없는 구문을 null문이라고 한다. 즉 구문이 '무형'이라는 뜻이다.아래와 같이 i 할당문, j 할당문의 사이에 있는 것이 null문이다.i=0; ; j=1 null문은 주로 본문이 비어있는 루프에 쓰인다.주로 방법2로 많이 사용한다. 루프의 본문이 비어있다는 것을 쉽게 파악할 수 있게 하기 위함이다.for (d = 2; d   아래 예시는 2 이상의 수 중 n을 나눌 수 있는 최솟값을 구하는 코드이다.이건 본문이 루프 밖에 있어서 루프 바로 뒤에 세미콜론을 붙여도 문제 없었지만for (d = 2; d  보통은 본문이 루프 안에 있을 것이다. 그래서 본문이 실행되지도 않은 채 루프만 돌게 하는 것을 방지하기 위해서본문 내용이 없더라도 꼭 중괄호를 사용하는 것..

정글 2025.04.11

[백준/Java] 11049번 : 행렬 곱셈

문제https://www.acmicpc.net/problem/11049풀이문제에서 주어진 원리 이해하기행렬 곱셈 -> 앞 행렬의 열 수와 뒤 행렬의 행 수가 같아야 곱셈 가능n*m행렬과 m*k 행렬의 곱셈 : 연산 수는 총 n*m*k번 그러나 행렬 N개를 곱하는 경우 곱셈 순서에 따라 연산 수가 달라질 수 있음 예)A : 5*3B : 3*2C : 2*6 (AB)C5*3과 3*2 -> 5*3*2 = 305*2와 2*6 -> 5*2*6 = 6030 + 60 = 90 A(BC)3*2와 2*6 -> 3*2*6 = 363*6과 5*3 -> 3*6*5 = 9036 + 90 = 126dp에 저장해야할 값?처음에는 행렬A, 행렬B의 곱셈 결과로 몇 행, 몇 열짜리의 새로운 행렬이 생성되는지의 정보를 저장해야하나 생각했..

정글/알고리즘 2025.04.10