일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 28 | 29 | 30 | 31 |
- 삼성 코딩테스트
- 안드로이드 스튜디오
- upper_bound
- 그리디 알고리즘
- 캘리그라피
- yolo
- 위상정렬
- MST
- 다음 API
- 비트마스크
- 외판원 순회
- BOJ 2098
- boj
- 이분탐색
- 인간이 그리는 무늬
- 다음 지도 api
- multiset
- 생활코딩
- 창훈쓰다
- Segment Tree
- BFS
- 언어의 온도
- 영어회화 100일의 기적
- 백트레킹
- DP
- 평창동계올림픽
- 다이나믹 프로그래밍
- 성화봉송주자
- lower_bound
- 성화봉송
- Today
- Total
목록Honey Night (250)
Hoon222y
3.1 코드의 중요성을 간과하지 마라.프로그래밍 대회에서 좋은 성적을 올리기 위한 비결은 당장 빨리 코드를 작성하는 것보다 읽기쉬운 코드를 작성하는 것이다.- 복잡하고 읽기 어려운 코드는 디버깅도 어렵고, 한번에 정확하게 작성하기도 어렵기 때문에 ...- 반복적인 연습을 통하여 내 코드 스타일을 간결하고 일관되게 짜야한다. 3.2 좋은 코드를 짜기위한 원칙간결한 코드를 작성하기적극적으로 코드를 재사용하기- 같은 코드가 세번이상 등장한다면 항상 해당 코드를 함수로 분리해 재사용 한다는 원칙을 만들면 좋다.표준 라이브러리 공부하기 - 적어도 언어의 문자열, 동적배열, 스택, 큐 리스트, 사전등의 자료구조 그리고 정렬등의 표준적인 알고리즘 구현 사용법을 알아두자.항상 같은 형태로 프로그램을 작성하기일관적이고 ..
내려가면서 최대합이 되도록 구하는 문제이다. 이 문제를 처음 접근할 때 모든 경우에 대해서 완전 탐색을 하게 되면 당연히 되지만 그렇게 되면 시간이 너무 오래 걸린다는 문제가 있다.그래서 이러한 문제를 접근할 때는 아래서부터 합을 하는 방식으로 접근을 하였다.위 코드 처럼 짰는데 [3][3] = [3][3] + 대수비교([4][3],[4][4]) 를하여 [0][0]까지 구한뒤 [0][0]값을 출력하면 되었다. 그리고 다른사람들의 코드를 읽어보려고 하였으나 .... 왠지 이해가 안된다 ㅋㅋㅋㅋ define의 정의과 뭐 이런걸 몰라서 그런가 ...암튼 완료
2차원 배열 동적할당을 해야하는 문제이다. 배열의 합을 구하는 for 문에서 뻘짓을 했다 ..;; ㅋㅋㅋ이 문제를 풀면서 정리하게된 2가지 개념은 바로 2차원배열 동적할당과, memset() 사용법이다. 먼저 2차원 배열 동적할당에 대해 정리해보자.코드 옆에 주석을 달아두었으니 읽어보면 이해가 될것이다. 유의해야할 점은 2차원 동적할당 해제하는 순서를 신경써야 할 것 이다. 다음은 memset()함수이다.함수에서 mem-라고 시작되는것은 메모리와 관련있다고 한다. ex)memcpy-메모리 카피함수memset함수를 사용하기 위해 일단 #include 를 선언해주고 사용해야 하며,memset(초기화 메모리 공간의 시작주소,초기화 하고싶은 값, 설정한 데이터의 사이즈) 이런식으로 초기화 해주면 된다.memse..
소숫점 9자리로 고정하는 문제이다.소숫점 고정하기 위해 (precision 을 사용하기 위해) #include 을 해주고 fixed를 같이 써주어야 9자리까지 고정이 된다. 참고할것!
처음에 이 문제를 접근할 때는 그냥 a^b을 10으로 나눈 나머지를 배열에 넣고 출력해야지 했는데 7^635 등의 범위를 넣을수 있는 변수크기가 없다는걸 알게 되었다. 이 문제의 포인트는 위의 코드처럼 a^b을 담으려 할필요 없이 그냥 각각 한번식 연산을 할 때마다 마지막 자리수만 보관을 하면된다.aPb = (aPb*a) %10; 이런식으로....
이번에는 가장 많이 사용하는 프로그래밍 방법이며, 효율적인 객체지향 프로그래밍에 대해 알아보자이번시간에는 개념 정의 위주로 설명이 될 것 이다.객체지향 프로그래밍을 하면서 가장 많이 사용되는 용어인 객체와 클래스를 알아보자면 , 클래스와 객체는 붕어빵과 붕어빵 틀과 같은 관계이다.클래스는 구조체와 문법적인 관계가 비슷하나 함수까지도 맴버로 넣는다는점이 구조체와 다르다.또한 객체란 클래스를 이용하여 정의된 변수를 객체라고 한다. 이번에는 정보 은익(Data hiding)과 캡슐화에 대해 알아보자.정보은익이란 다른 객체의 내부를 모르게 하는것으로 정보를 숨기는 것이다. 즉 객체간의 연관성을 줄이는 것이다.캡슐화란 약속된 부분을 제외한 나머지 부분을 캡술로 감싸서 숨겨버리는 것으로 이걸 이용하여 정보은익을 할..
이번시간에는 헤더파일에 대해 알아보도록 하자.헤더파일을 만드는 목적은 큰 프로그램을 나누어 알아보기 쉽게함도 있고, 다른 프로그램을 만들대 참고하는 역할도 할수있다.두 점사이의 거리를 출력하는 프로그램을 cpp파일과 헤더파일로 나누었다. 헤더파일의 경우 #include "헤더파일명.h" 로 참고를 해준다. 헤더파일을 나누는 통상적인 규칙은 3가지가 있는데1)공유될 함수가 있는 구현파일의 이름을 따서 헤더파일을 만든다.2) 이 헤더파일에 공유될 함수의 원형을 적어준다.3) 공유될 함수를 호출할 구현파일에서는 이 헤더파일을 포함한다.4) 구현파일에 자기 자신에 대한 헤더파일을 포함하게 만든다. 정도이다. 마지막으로는 헤더파일이 두번 포함되는걸 막는 방법이다. 코드를 보자.중복을 막기위해 point.h 에 해..
이번에는 C,C++스타일 문자열을 혼합해서 사용하는 방법에 대해 알아보자 .각각의 스타일만 사용해도 되긴하지만, 큰 프로그램을 만드는 과정에서 여러사람이 문자열을 사용하는 방법이 각각이기 때문에 잘 혼합하여 사용하는것이 중요하다.다음 코드를 보자. C스타일과 C++ 스타일이 섞여있다.c_str()함수를 통해 문자열을 복사하는것을 볼 수 있다. 하지만 이 함수를 통해 얻은 문자열은 오로지 읽는 용도로 밖에 사용할 수 없다. 즉 cstyle을통해 cppstyle의 문자열을 변경할 수 없다는 뜻이다. 문자열을 완전히 얻어와 변경까지 가능하게 하고싶다면 strcpy() 함수를 사용해야 한다. 코드를 보자.코드를 보면 strcpy(cstyle,cppstyle.c_str()) 을 통해 문자열을 복사하고 문자열을 수..
이번에는 문자열에 대해 공부해 보도록 하겠다.문자열의 경우 C 스타일, C++스타일로 나뉘게 되는데, 먼저 C스타일 문자열에 대해 배워보도록 하자.C 스타일 문자열의 경우 간단히 말하면 '문자를 배열' 에 보관한다고 볼 수 있다. 코드를 보면서 이해해 보자.여기서 strcpy(dest , src) 의 의미는 src 내용을 dest에 복사한다는 뜻이다. 또한 strlen(src)는 src의 길이를 반환해주는 함수이다. strlen()함수는 NULL문자를 제외한 길이라는 점을 유의해야 한다.이번에는 문자열을 비교하고, 결합하는 방법에 대해 배우도록 하겠다. 코드를 보도록 하자.strcat(str1,str2)는 str1뒤에 str2를 합친 문자열을 str1 에 보관하도록 한다. 여기서 주의할 점은 str1의 ..
동적 메모리란 무엇이고 동적 메모리를 사용하는 이유는 무엇일까? 일단 동적메모리란 동적으로 메모리를 할당(Allocation)한다는 말이다. 정적 메모리 할당과 차이가 있다면 1) 메모리 크기를 프로그램이 실행하기전에 결정하는지, 프로그램을 실행하는 도중에 결정하는지2) 메모리를 할당하고 해제하는 시점이 자유로운지 이다.그리고 동적 메모리의 특징은 동적메모리 할당으로 할당한 메모리는 사용자가 직접 해제해주기 전까지는 절대로 컴퓨터에 의해 해제되는 일이 없다는 것이다.그럼 지금부터 동적 메모리 할당하는 방법에 대해 알아보자. 입력한 갯수만큼의 수를 합해주는 간단한 코드이다. 여기서 볼 부분은 int* arr= new int[size] 와 delete [] arr 이 부분이다.int* arr = new in..