본문 바로가기
728x90
반응형

programming60

[C언어] 자료구조 - 개념 정리 1. 알고리즘 시간복잡도 시간복잡도 O(1) : 알고리즘의 수행시간이 입력 데이터 수와 관계없이 일정하다 2. 알고리즘 복잡도 for(int i = 0; i < n; i *= 2 ) sum++; O(logn) 3. 용어정리 수행시간 : 순환이 반복보다 더 길다 데이터 타입 : 객체와 그 객체 위에 작동하는 연산들의 집합 알고리즘 공간복잡도 : 필요한 공간의 양 알고리즘 시간복잡도 : 필요한 컴퓨터의 시간의 양 4. 연결리스트 두 개의 리스트 하나로 합칠 때 효율적. 검색 : O(N) 삭제 : 이전노드 알 경우 O(1) 5. 원형연결리스트 헤드포인터가 마지막 노드 가리킬 경우 : 맨앞 삽입 & 맨뒤 삽입 쉬움 첫번째 노드 검색 시간 O(1) 6. 이중원형연결리스트 원형리스트 : 원형이 이전으로 순회할 수 .. 2020. 11. 2.
[C언어] 자료구조 - 문자열예제(글자수 공백포함해서 세는 프로그램) 글자수 공백포함해서 세는 프로그램 입력1 $ myomyo 출력1 myomyo : 6 입력2 $ welcome to my blog 출력2 welcome to my blog : 18 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include #include #define BUFFER_SIZE 20 int main(void){ char buffer[BUFFER_SIZE]; while(1){ printf("$ "); //gets(buffer); 공백포함해서 받음 //그러나 배열이상 입력해도 돌아가는 문제점있음 fgets(buffer, 10, stdin);//엔터까지읽어서 버퍼에 저장 buffer[strlen(buffer) - 1] = '\0';//엔터자리에 널값 넣어줌 print.. 2020. 8. 8.
[C언어] 자료구조 - 문자열, 파일 읽어오기 문자열이란? char 타입의 배열 : 한칸에 문자하나 마지막 문자열은 '\0' null값 => C에서는 char str[] = "hello"; 이것은 str h e l l o \0 과 같음 string literal char *str = "hello"; (수정 불가능) string.h라이브러리 strcpy 문자열 복사 strlen 문자열 길이 strcat 문자열 합치기 strcmp 문자열 비교 strdup함수를 이용하여 words할당하기 ex) words rain cloud sky sun 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #define BUFFER_SIZE 100 int main(void){ char *word.. 2020. 8. 8.
[C언어] 자료구조 - 포인터,배열,malloc 모든 변수는 주소를 가진다. 포인터(pointer) : 메모리 주소를 값으로 가지는 변수 int *ptr; & : 주소 추출 int c = 10; int *p; p = &c; //변수 c가 저장되어있는 메모리주소를 p에 넣음 int x = 1; int y = 1; int *ip; ip = &x; //x의 주소값1003가 ip에 저장됨. y = *ip; //ip에 있던 1003의 주소값을 가진 x값, 즉 1이 y에 저장됨. *ip = 0; //x가 0으로 됨. 1003 1 x 1004 1 y 1005 1006 1003 ip 1007 배열의 이름은 배열의 첫번째 값을 저장하는 포인터 int calculateSum(int *array) int함수에서 배열을 매개변수로 넘겨줄 때, 포인터 사용 가능 array[.. 2020. 7. 17.
[java] 파일 입출력 [예제] 텍스트 파일 읽기 import java.io.FileReader public class FileReaderExample{ public static void main(String args[])Throws Exeption{ FileReader fr = new FileReader("D://test.txt"); int ch; while((ch = fr.read()) != -1) System.out.print((char)ch); fr.close(); } } 입출력스트림 문자스트림 입력 바이트 스트림 입력 문자 스트림 출력 바이트 스트림 출력 문자 스트림 byte stream - 이진데이터 위함 InputStream 클래스 abstract int read() OutputStream 클래스 abstract .. 2020. 6. 13.
백준(Baekjoon)_5586번 문제풀이 저번에 문자열 정답비율60퍼인거 3시간동안 쩔쩔대서 그냥 78퍼로 했는데 15분컷.. 너무 코딩에 겁내지말자 몽구스야 #include int main(void) { int i, j_sum = 0, i_sum = 0; char str[10000]; scanf("%s", str); for(i = 0; str[i] != '\0'; i++) { if(str[i] == 'J'){ if(str[i + 1] == 'O' && str[i + 1] != '\0'){ if(str[i + 2] == 'I' && str[i + 2] != '\0') j_sum++; } } if(str[i] == 'I'){ if(str[i + 1] == 'O' && str[i + 1] != '\0'){ if(str[i + 2] == 'I' &&.. 2020. 3. 2.
백준(Baekjoon)_11722번 문제풀이 이거 정답비율 64%인거 치고 너무 어려웠다. 아마 이것과 비슷한 문제가 있어서 그걸 풀고 온 사람들 덕에 높은 것 같음. 일단 저 말부터 이해가 잘 안갔음. 가장 긴 감소하는 부분 수열이란, ex) 1 9 3 7 6 2 이렇게 있으면 1을 기준으로 가장 긴 감소하는 부분 수열은 자기자신 1 하나. 그러므로 1. 6을 기준으로하면 9 7 6 해서 길이는 3. 2를 기준으로 하면 9 7 6 2 해서 길이는 4. 기준이 되는 수 1 9 3 7 6 2 1 1 2 2 3 4 이렇게 이 수열은 앞숫자와 관련이있다. 앞수의 감소되는 수열 길이에서 +해나가는 것이라고 보면 됨. 역시 난 구글링을 하였고.. 그나마 간단하게 코드 짜본게 이거다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17.. 2020. 2. 5.
백준(Baekjoon)_2167번 문제풀이 #include int main(void) { int n, m; int i, j, k; int a, b, x, y; int num, total = 0; int arr[300][300] = {0}; //배열 넉넉하게 설정하여 런타임에러방지 scanf("%d %d", &n, &m); for (i = 0; i < n; i++){ for (j = 0; j < m; j++) scanf("%d", &arr[i][j]); } scanf("%d", &num); for (k = 0; k < num; k++){ scanf("%d %d %d %d", &a, &b, &x, &y); for (i = a - 1; i 2020. 1. 28.
백준(Baekjoon)_2163번 문제풀이 이 문제는 내가 형광펜 표시한 N과 M을 이용해서 하면 쉽다. 개인적으로 기본문제라고 생각함. 여기서 초콜릿을 '자른다'라는 의미는 두개를 한번에 자를 수 없고 하나씩 나누어가며 자른다는 것이다. 2 * 2 의 초콜릿이라면 이렇게 3번 자를 수 있는 것이다. 이렇게 식을 도출하면 (n-1)+((m-1)*n)이 나온다. #include int main(void) { int n, m; int result; scanf("%d %d", &n, &m); result = n - 1 + ((m - 1) * n); printf("%d\n", result); } 쉬워서 코드가 간단하다. 이게 끝 /0118 2020. 1. 18.
728x90
반응형