본문 바로가기
반응형

C20

[C] 백준 1003번: 피보나치 함수 언뜻 쉬워보이는 문제이지만 함정이다. 피보나치 함수를 그대로 줘서 마치 저걸 변형하면 되게 보이게 했지만 완전히 다른 방법으로 접근해야 한다. 문제 조건의 제한 시간은 0.25초. 시간복잡도 O(n)으로 맞춰야 풀 수 있다. 입출력 예시 정답코드 #include typedef struct fibo { int zero_count; int one_count; }FIBO; FIBO f[41] = { {0, 0} }; FIBO CountZeroOne(int); int main(){ int T; int i; int n; f[0].zero_count = 1; f[0].one_count = 0; f[1].zero_count = 0; f[1].one_count = 1; scanf("%d", &T); CountZeroO.. 2019. 3. 12.
[C] 백준 3273번: 두 수의 합 문제에 탐색, 정렬 알고리즘을 바로바로 적용시키는 연습을 한창 하고있다. 안한지 꽤 오래돼서 파악하는데 좀 걸린다. 이번 문제 역시 문제는 쉽지만 제한시간을 맞춰야하기 때문에 정렬과 탐색을 적절히 사용해야 한다. 나는 시간복잡도 O(n * log n)으로 했다. 입출력 예시 정답코드 #include #include void quickSort(int *, int, int); int inPlacePartition(int *, int, int, int); int search(int *, int, int); int main() { int n; int x; int *arr; int i; int tmp; int count = 0; scanf("%d", &n); arr = (int *)malloc(sizeof(int.. 2018. 10. 28.
[C] 백준 1620번: 나는야 포켓몬 마스터 이다솜 알고리즘 연습이 소홀해져서 오랜만에 백준을 풀다가 특이한 제목의 문제라서 한 번 시도했다가 꽤 오래 풀었다. 문제 자체는 쉬운데 시간제한을 맞춰줘야 하기 때문에 정렬과 탐색을 적절히 써야하는 문제다. 과도한 컨셉의 폐혜 입출력 예시 정답코드 #include #include #include struct pocketmon { char name[21]; int i; }; int isInteger(char *); int pocketmonSearch(struct pocketmon *, char *, int, int); void quickSort(struct pocketmon *, int, int); int inPlacePartition(struct pocketmon *, int, int, int); int mai.. 2018. 10. 26.
[C] 단일연결리스트 합병정렬 (singly linked list merge sort) 합병정렬에 관한 포스팅은 따로 알고리즘 창고에 하겠습니다. 보통 배열로 이루어진 정렬만 해서 애를 먹었습니다. 특히 분할하는 부분에서 힘들었는데, 그래도 깔끔한 방법을 찾아내 만들었습니다. 구조체 및 함수설명 NODE : 단일연결리스트를 구성하는 노드 구조체 TMP : partition 함수를 위한 구조체. 두 개의 반환값을 받아내기 위함 NODE* addNode(int n) : 노드를 추가하는 함수. 단일연결리스트 끝부분에 계속 붙여나가므로 새 노드 값의 next는 항상 NULL이다. void mergeSort(NODE **L, int k) : 합병정렬함수. 재귀방식으로 구성돼있다. L은 리스트의 시작 주소, k는 리스트의 크기이다. NODE* merge(NODE *L1, NODE *L2) : 합병함수.. 2018. 10. 14.
[C] 백준 13458번: 시험 감독 되게 오랜만에 백준을 풀고 쓰는 글이다. 방학의 휴식과 개인적인 일을 하다보니 공부가 소홀해졌다. 앞으로는 하루에 하나씩이라도 풀어나가야겠다. 시험 감독의 핵심은 연산 중에 총감독관의 할당량을 계산하고 음수가 되는 상황을 처리하는 것이다. 이것을 찾지 못하면 능구렁이에 빠진 것 마냥 문제를 해결하지 못할 수도 있다. 내가 그랬다. 그래서 인지 정답 비율도 낮다. 한 열흘간 굳어버린 나의 뇌를 깨우는데 좋은 문제였다. 입출력 예시 정답 코드 #include int main() { long long N; long long *A; long long B, C;// 총감독, 부감독 long long B_count = 0, C_count = 0; scanf("%lld", &N); A = new long long[N.. 2018. 8. 12.
[C] 백준 9012번: 괄호 문제 조건은 참 간단하다. 괄호 짝이 알맞게 지어져 있는지를 판별하는 것이다. 여는 괄호가 계속 누적 됐다가 나올 수도 있고 열렸다가 닫혔다가 반복할 수 있기 때문에 스택을 이용해 푸는 것이 가장 편하게 먹힌다고 생각한다. 시간이 나면 한 번 스택이 아닌 다른 방법으로도 풀어봐야겠다. 입출력 예시 정답 코드 #include char stack[50]; int top = 0; int isVPS(char *); void push(char); char pop(); int isEmpty(); int main() { int t; char str[51]; int i; scanf("%d", &t); for (i = 0; i < t; i++) { scanf("%s", str); if (isVPS(str)) printf.. 2018. 7. 29.
반응형