│문제
│풀이 (Python)
│설명 (Python)
keypoint 1- sys.stdin.readline()
시간초과 문제를 해결하기 위해 스택문제와 같이 input()이 아닌 sys.stdin.readline()을 활용하여야 한다.
pop()함수 작동시 인덱스가 줄어드는 내용에 관한 정의를 확인할 수 있다.
입력 속도 sys.stdin.readline() > input()
│풀이 (C언어)
│설명 (C언어)
keypoint 1 - 동적할당
동적할당을 사용하는 이유) 배열의 크기를 모를 때
이번 문제에서는 첫 n에 따라 배열의 크기를 다르게 설정해야한다.
int arr[100]; 이처럼 임의로 배열크기 설정시 공간이 부족거나 혹 공간이 남아 돌 수 있다.
이와 같은 문제 해결을 위해 동적할당을 사용하면 메모리 낭비와 공간부족 문제를 해결 할 수 있다.
c언어에서는 기본적으로 malloc()을 이용하여 동적할당을 한고, 동적할당을 사용 후 프로그램 종료 전에 free()로 메모리 해제를 한다. 함수의 원형은 다음과 같다.
문제에 상황인 경우 아래와 같이 작성할 수 있다.
ps) 대부분의 Os에서는 free()처리를 해주지만 free()처리를 해주지 않는 환경에서 작업시 습관이 안 들여져 있다면 매우 찾기 어려울 수 있다. 절대 free()를 까먹지마 !
keypoint 2- qsort 정렬 / qsort 라이브러리 활용
c언어에서 <stdlib.h> 라이브러리에서 아래와 같이 qsort함수가 정의되어 있다.
void *base: 정렬하고자 하는배열
size_t nel:배열의 사이즈
size_t width : 배열에서 원소의 사이즈 ex)sizeof(int),sizeof(float)
int (*compare)(const void *, const void *): 비교함수 / 비교함수는 아래와 같이 작성할 수 있다.
각 if문 아래의 숫자인 -1과 1을 바꿔보면 오름차순과 내림차순을 조절할 수 있다.
정리하면 void qsort(정렬하고자 하는 배열, 사이즈, 배열에서 원소의 사이즈 ,비교함수) 라 할 수 있다.
'Baekjoon' 카테고리의 다른 글
[백준] 11650번 좌표 정렬하기 ( 파이썬 / c언어) (0) | 2023.07.24 |
---|---|
[백준] 10866번 덱 ( 파이썬 / c언어 ) (0) | 2023.07.24 |
[백준] 10870번 피보나치 수 5 ( 파이썬/ c언어) (0) | 2023.07.18 |
[백준] 10845번 큐 ( 파이썬 / c언어) (0) | 2023.07.16 |
[백준] 1874번 스택 수열 (파이썬) (0) | 2023.07.15 |