⛰️ 문제https://www.acmicpc.net/problem/10844인접한 모든 자리의 차이가 1인 수를 계단 수라고 함N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구하기0으로 시작하는 수는 계단수가 아님🧠 접근 방법가장 뒤에 오는 수를 기준으로 개수를 찾음입력N: 길이1보다 크거나 같고, 100보다 작거나 같은 자연수출력정답을 1000000000으로 나눈 나머지👩🏻💻 코드for i in range(10): if i == 0: continue DP[1][i] = 1길이가 1일 때의 초기값을 설정해줍니다.for i in range(2, N+1): for j in range(10): # 앞에는 1밖에 올 수 없음 if j =..
루트 노드에서 leaf 노드로 가는 경로를 보았을 때 red black 트리는 한 경로가 다른 경로보다 2배 이상 길지 않다. 그래서 대체적으로 균형잡혀 있다.각각의 노드는 color, key, left, right, p 속성을 가지고 있다.red black 트리는 아래 규칙을 만족하는 이진 탐색 트리이다.규칙모든 노드는 색을 가진다. (red 또는 black)루트 노드는 black모든 leaf 노드는 NIL, blackred 노드는 red 자식 노드를 가질 수 없다.(2개의 black 자식을 가져야 한다.)각 노드에서 leaf 노드로 가는 경로들은 같은 수의 black 노드를 가지고 있어야 한다.회전Left-Rotate 왼쪽 회전y의 왼쪽 서브트리는 x의 오른쪽 서브 트리가 된다.(바꾼다라는 표현이 헷..
서론포인터를 적용해보고자 연결 리스트를 구현해보았습니다. 구현하면서 흐릿했던 포인터의 개념이 약간은 명확해졌습니다. 코드는 사람마다 다르기 때문에 흐름만 이해하고 직접 구현해보는 것을 추천합니다. (포인터, 구조체, 동적할당 개념 필요)🔗 연결 리스트데이터를 순서대로 저장하는 자료구조 중 하나입니다. 연결 리스트는 각각의 노드가 데이터와 다음 노드의 주소를 가지고 있는 방식으로 구현됩니다. 연결 리스트는 배열과 달리, 데이터가 메모리 상에서 연속적으로 위치하지 않기 때문에 삽입, 삭제가 용이하고 데이터 크기를 동적으로 조절할 수 있습니다.삽입int insertion(nval) { struct node *newNodeptr = (struct node *)malloc(sizeof(struct node))..
서론학교 다닐 때 계절로 잠깐 접했던 C언어를 다시 공부하게 되었습니다. 여러 책과 동영상을 보고도 희미했던 포인터의 개념이 이재범님의 씹어먹는 C언어를 읽고 약간 선명해졌습니다. 그래서 잊기 전에 기록으로 남기고 개념이 정돈될 때마다 수정하려 합니다.개념포인터도 변수: 특정한 데이터가 저장된 주소값을 보관합니다.포인터 선언하기➡ (포인터에 주소값이 저장되는 데이터 형) *(포인터 변수 이름)포인터를 이용해서 해당 주소의 값 가져오기➡ *: 주소값에서 해당 주소의 데이터를 가져오는 연산자➡ *p: 내가 저장하고 있는 주소값에 위치한 데이터야!변수의 주소값을 포인터 변수에 할당하고 싶다면➡ & 이용하기➡ 변수의 주소값이 궁금하면 변수 앞에 &붙이기포인터 변수를 출력하고 싶다면➡ %p예시 코드#include..
백준과 친해지기! 효율적으로 코딩하기# 함께 공부하기 👩🏻💻알고리즘 주차가 시작되었고 첫날부터 백준 문제를 풀기 시작했다. 처음에는 팀 리뷰 시간에 뭘 이야기해야 할지, 당장 이해되는 문제가 거의 없는데 말할 게 있기는 한지 싶어 적극적으로 주도하지 못했다.3주차가 되어야 비로소 팀원들과 정기적으로 리뷰 시간을 가지면서 각자의 문제 해설을 공유하기 시작했고, 이 방법이 많은 도움이 되었다. 코드를 이해하는데 시간이 오래 걸리는 편이라 처음에는 내 코드를 설명하는 것도 제대로 하지 못했다. 팀원들 앞에서 어버버하는 나 자신이 얼마나 부끄럽던지... 그래도 하다 보니 는다고 마지막 주차에는 이해하고 있는 내용을 어느 정도는 설명할 수 있게 되었다. 미루고 미뤄왔던 블로그를 쓰기 시작했다. 대부분의 문..
🗺️ 문제https://www.acmicpc.net/problem/20981~N번까지 번호가 매겨져 있는 도시들이 있고, 도시들 사이에는 길이 있음(길이 없을 수도 있음)외판원이 한 도시에서 출발해 N개의 도시를 모두 거쳐 다시 원래의 도시로 돌아오는 순회 여행 경로를 계획하려고 함.한 번 갔던 도시로는 다시 갈 수 없음(출발했던 도시로 마지막에 돌아오는 것은 예외)이런 여행 경로는 여러 가지가 있을 수 있는데, 가장 적은 비용을 들이는 여행 계획을 세우기각 도시간에 이동하는데 드는 비용은 행렬 W[i][j]형태(도시 i에서 도시j로 가기 위한 비용)비용은 대칭적이지 않음모든 도시간의 비용은 양의 정수W[i][i]는 항상 0도시 i에서 도시 j로 갈 수 없는 경우 => W[i][j] = 0N과 비용 행..
🪨 문제https://www.acmicpc.net/problem/2253N(순서대로 1, 2, …, N번 돌)개의 돌현재 1번 돌 위, 점프 하면서 N번째 돌로 이동을 하려 함이동은 돌 번호가 증가하는 순서대로만 할 수 있음제일 처음에 점프를 할 때에는 한 칸밖에 점프하지 못함.이전에 x칸 점프를 했다면, 다음번에는 x-1칸 점프하거나, x칸 점프하거나, x+1칸 점프를 할 수 있음. 물론 점프를 할 때에는 한 칸 이상씩 해야 함.몇 개의 돌은 크기가 너무 작기 때문에 올라갈 수 없음.위와 같은 조건들을 만족하면서 1번 돌에서 N번 돌까지 점프를 해 갈 때, 필요한 최소의 점프 횟수 구하기🧠 접근 방법이 문제는 위의 점화식을 사용하기 위해서 DP 테이블을 만드려면 인덱스가 헷갈립니다. 행 번호의 경우..
🧮 문제크기가 N*M인 행렬 A와 M*K인 B를 곱할 때 필요한 곱셈 연산의 수는 총 N*M*K번행렬 N개의 크기가 주어졌을 때, 모든 행렬을 곱하는데 필요한 곱셉 연산 횟수의 최솟값을 구하기🧠 접근 방법결국에 최종적으로 만들어지는 두 개의 큰 행렬의 곱셈 연산 횟수를 구합니다.참고 링크: https://youtu.be/8Ni1gaP35i8, https://youtu.be/8Ni1gaP35i8이 문제는 행렬을 배우지 못한 세대인 제게는 볼 때부터 매우 두려운 문제였습니다. 하지만 문제에서 곱셈 연산의 수 공식을 알려주고 있기 때문에 그것만 이용하면 충분히 풀 수 있을 것 같습니다.(지금 생각해보면...) 유튜브 영상을 몇 번 돌려보고 같이 공부하는 팀원에게 설명도 몇 번 해보고, 친구의 도움도 받아서..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.