본문 바로가기
  • 비둘기다
  • 비둘기다
  • 비둘기다

전체 글53

[스택] 백준 10799번 (C언어) : 쇠 막대기 #define _CRT_SECURE_NO_WARNINGS #include #include #include #define N 100000 char str[N]; int main(void) { int count = 0, sum = 0; scanf("%s", str); for (int i = 0; i < strlen(str); i++) { if (str[i] == '(') { count++; } else if(str[i] == ')') { count--; if (str[i - 1] != str[i]) sum += count; if (str[i] == str[i + 1]) sum += 1; } } printf("%d", sum); } main함수 안에 있는 for문을 살펴보면 일단 열리는 괄호 ( 가 나오면 ).. 2023. 5. 18.
[Computer Vision] cs231n lecture4 - Backpropagation andNeural Networks part 1 먼저 지난 강의의 내용을 복습하자면 다음과 같습니다. 먼저 문제와 정답 사이의 점수를 scores function을 이용하여 얻어내고, SVM과 같은 손실함수로 위의 점수들의 현황이 얼마나 좋은 상황인지 아닌지를 판별했습니다. 그다음 L이라는 변수를 loss에 대한 combination과 정규화된 값을 이용하여 지정해 줬습니다. 그러면 이제 우리가 찾고자 하는 것은 가장 낮은 손실에 대한 W값입니다. 그러기 위해서는 W에 대한 L의 기울기를 구해야 합니다. 그래서 저번 lecture3에서 gradient descent와 optimization을 보면서 우리가 원하는 최적의 W값을 얻는 법을 배웠습니다. 이번에는 저번에 배운 analytic gradient를 임의의 complex function에 적용하는.. 2023. 5. 12.
[스택 & 큐] 백준 1935번 (C언어) - 후위 표기식2 문제는 간단히 말해 후위 표기식을 연산하는 문제이다. 후위표기식은 스택으로 구현하는 경우가 있다는 것을 알기 때문에 스택으로 구현하는 것을 생각해 보았다. 후위표기식은 연결 리스트로 만들어줄 이유가 없기 때문에 간단하게 배열로 짜도 상관이 없을 것 같았다. #define _CRT_SECURE_NO_WARNINGS #include #include #include double stack[100]; int top = -1; void push(double x) { stack[++top] = x; } double pop() { return stack[top--]; } int main(void) { int n; char str[101]; scanf("%d", &n); int* value = (int*)malloc(.. 2023. 5. 9.
[스택 & 큐] 백준 2164번 (C언어) - 카드2 문제는 카드의 순서를 가장 위와 가장 아래에서만 조작하는 것이 특징이다. 그래서 처음 생각했던 것은 스택이었으나, 후입선출인 스택보단 선입선출이 되는 큐가 좀 더 효율적일 것 같아 큐로 하기로 했다. 큐를 만드는 방식에는 여러 종류가 있는데 대표적으로는 선형 큐, 원형 큐, 연결 큐가 있다. 덱도 있지만 이는 연결 큐의 일종인 것 같아 넣지 않았다. 문제를 보니 가장 앞의 카드를 빼고 그다음에 오는 카드를 가장 뒤로 보내는 방식을 봤을 때 원형 큐가 가장 적합한 것 같았다. #define _CRT_SECURE_NO_WARNINGS #include #define SIZE 500001 typedef struct { int queue[SIZE]; int front, rear; }queue; queue Queu.. 2023. 5. 9.
[Data Structure] 연결 리스트(Linked List) ● 연결 리스트(Linked List) 연결 리스트는 선형 리스트처럼 리스트의 한 종류입니다. 연결 리스트는 전체적으로 보면 선형 리스트의 단점을 보완한다는 점이 있지만, 그만큼 구현이 복잡하기 때문에 서로가 장단점은 가진다고 볼 수 있습니다. 선형 리스트의 가장 큰 단점이라고 한다면 바로 리스트의 조작입니다. 선형 리스트는 배열을 기반으로 하기 때문에 정해진 크기 내에서만 활용이 가능하며, 그렇다고 배열의 최대 크기를 너무 크게 잡아버리면 낭비되는 메모리가 많아 결점이 많은 방법이었습니다. 연결 리스트는 이러한 문제를 해결해 줍니다. 연결 리스트는 배열을 사용하지 않고, 데이터 하나하나를 node의 개념으로 접근합니다. 예를 들어 배열에 1과 2를 넣으면 1과 2는 서로 다른 인덱스에 들어있지만 결국은.. 2023. 4. 15.
[Data Structure] 선형 리스트(Linear List) C언어에는 파이썬이나 자바와 달리 list라는 내장된 자료형이 없습니다. 보통 파이썬에서 list를 사용하면 list 내에서의 조작이 굉장히 자유롭습니다. 예를 들어 뒤에 이어 붙이기, 삭제하기 등이 단 하나의 명령어면 해결이 가능합니다. 그러나 C언어에는 list가 존재하지 않습니다. 그래서 위에서 말한 조작이 자유로운 배열의 형태를 직접 만들어주는 게 목적입니다. ● 선형 리스트 c언어에서 구현할 수 있는 리스트에는 여러 종류가 있습니다. 그 중 가장 먼저 생각할 수 있는 것이 선형 리스트입니다. 리스트라는 개념을 생각해보면 항목을 쭉 늘여놓은 목록 같은 개념입니다. 그렇다면 이를 c언어에서 구현한다고 생각했을 때 가장 먼저 생각나는 것이 배열입니다. typedef int element; typede.. 2023. 4. 14.