본문 바로가기

개발25

거듭제곱 빠르게 계산하기 Using loop unsigned long long pow(unsigned long long base, int exp) { long long ans = base; for (int i = 1; i < exp; ++i) { ans *= base; } return ans; } 하지만 xnx^nxn에서 nnn이 굉장히 커졌다고 생각했을 때는 이 방법은 굉장히 느리다. Using Recursive Function unsigned long long pow(unsigned long long base, int exp) { if (exp == 0) return 1; if (exp & 1) return base * pow(base * base, (exp - 1) / 2); else return pow(base * bas.. 2018. 5. 7.
선형 구조의 탐색 선형 구조의 탐색 이번 글은 선형 구조란 무엇이고 선형 구조 속에서 탐색하는 대표적인 방법 2가지를 설명한다. 선형 구조란? 선형 구조란 프로그래밍 언어를 배울 때 배우는 배열, 연결 리스트 같은 말 그대로 선 같이 생긴 데이터 구조를 선형 구조라고 한다. 반대로 비선형 구조는 트리, 그래프 등이 있다. [배열] - 대표적인 선형 구조 [연결 리스트] - 얘도 선형 구조다. 선형 탐색 선형 탐색에는 대표적으로 전체 탐색과 이분 탐색(이진 탐색)이 있다. 전체 탐색은 말 그대로 전체를 순환해서 어떠한 값을 찾는 것을 말하고 이분 탐색은 정렬된 선형 구조에서 부분적으로만 탐색을 해서 값을 찾는 부분 탐색을 말한다. 구체적인 예시와 설명을 보면서 설명하면 좋을 것 같다. 전체 탐색 전체 탐색은 전체를 순환하기.. 2018. 5. 5.
삽입 정렬 - Insertion Sort 오름차순으로 정렬하는 것을 기본으로 한다. 그림삽입 정렬은 인덱스에서 하나를 잡아서, 올바른 곳에 삽입하는 그림을 가지고 있다.보통 오름차순 정렬을 하기 때문에 왼쪽부터 순차적으로 인덱스를 하나씩 잡아서 작업을 하게 된다.선택한 인덱스의 왼쪽에 정렬된 배열과 비교하여 정렬을 한다. 이 알고리즘의 그림은 이 정도만 기억하면 될 것 같고 예시를 보면서 구체적으로 살펴보자.예시3 4 1 2 75개의 정렬되지 않은 숫자들이 있다.위에서 설명했다시피 인덱스 하나를 왼쪽부터 잡아서 올바르게 삽입하면 된다.첫 번째 위치에 있는 '3'은 해봤자 왼쪽에 아무 배열이 없으므로 두 번째 위치부터 작업한다. 1) 3 4 1 2 7왼쪽 배열과 비교했을 때 변경할 것이 없으므로 그대로 유지한다.2) 3 4 1 2 7왼쪽 배열과 .. 2018. 5. 3.
[JAVA]JAVA 시험 정리 JAVA의 특징: JVM에 의해 실행되므로 플랫폼에 독립적.JAVA의 기본변수 작성 규칙$으로 시작해도 된다.예약어 불가능길이 제한 X데이터형Java Data Typeㄴ Primitive Type(기본형) ㄴ Boolean Type(boolean) ㄴ Numeric Type ㄴ Integral Type ㄴ Integer Type(short, int, long) ㄴ Floating Point Type(float, double) ㄴ Character Type(char)ㄴ Reference Type(참조형) ㄴ Class Type ㄴ Interface Type ㄴ Array Type ㄴ Enum Type ㄴ etc.기본형(32bit 기준)boolean: 1byte(true, false로 소문자다)char: 2.. 2018. 4. 25.
자바 default 지정자는 패키지 private이라고도 한다. 2018. 4. 11.
C# 프로그래밍 첫걸음(1) *참고: C/C++/Java(조금)을 배운 제가 C#을 처음 배우면서 알아둬야 할 것 같다고 생각한 것만 적어뒀습니다.Chapter 1 C# 프로그래밍 첫걸음 라이브러리와 프레임 워크의 차이 라이브러리는 미리 만들어진 코드라고 할 수 있다. 개발자가 사용해야지만 작동한다. 프레임워크는 최근 들어서는 프레임워크 = 대규모의 라이브러리라고도 하지만 처음 배우는 입장에서는 명확하게 짚고 넘어갈 필요가 있다고 했다. 프레임워크란 제어 역전이 있는 대규모의 라이브러리이다. 즉, 프로그램의 초기화부터 종료까지의 흐름을 직접 관리하게 된다. 출력함수 Console.Write(); // 출력함수 Console.WriteLine(); // 출력함수 + 기본적으로 문단 끝에 개행 문자 추가 Chapter 2 C#의 기본[.. 2018. 3. 31.
읽고 말하기 수열(개미 수열) C# 구현 읽고 말하기 수열 C# 구현 베르나르 베르베르 작가의 《개미》에서 소개되어서 유명해졌다고 위키피디아에 적혀 있다. 나도 어렸을 때 한 번 본 것 같은데 그 땐 프로그래밍을 안 했겠지..? 규칙 첫 번째 수열: 1 두 번째 수열: 1이 1개 = 11 세 번째 수열: 1이 2개 = 12 네 번째 수열: 1이 1개 2가 1개 = 1121 다섯 번째 수열: 1이 2개 2가 1개 1이 1개 = 122111 여섯 번째 수열: 1이 1개 2가 2개 1이 3개 = 112213 . . . 이런 규칙을 갖고 있는 수열이다. 처음에는 string으로 하려고 했지만 너무나 삽질을 하고 int[]로 돌아갔다... ㅠ 배열을 두 개 만들어서 arr1을 중심으로 두고 arr2를 다른 숫자가 나올 때마다 count를 저장해주는 용도.. 2018. 3. 31.
[파이썬] 바운스! 게임 공이 왔다갔다 거리면서 패들로 받아 치는 게임입니다. 많이들 해보셨을 거예요. 필요하시거나 코드 분석해보실 분들은 쓰세요. 저도 사실 책에서 하는 게임 만들기를 기반으로 만들어서 저작권 같은 건 없습니다. 2017. 10. 9.
C의 역사, C의 장단점 C는 UNIX의 부산물(?)로서 Bell 연구소의 Ken Thompson, Dennis Ritchie, 등... 에 의해 개발되었다.Thompson은 8K의 메인 메모리로 작동되는 초기의 미니 컴퓨터인 DEC PDP-7 컴퓨터에서 돌아가는 초기 버전의 유닉스를 작성했다(참고로 이때는 1969년도이다!).그 때 당시의 운영체제와 달리, UNIX는 어셈블리 어로 작성 되었다. 어셈블리 어로 작성된 프로그램들은 보통 디버그하기가 정말~ 힘들고 발전시키기가 어려움(발전; enhance로 해석함)Thompson은 UNIX의 더 많은 발전을 위해서는 고-수준의 언어가 필요하다고 결심하게 되었다, 그래서 그는 B 언어를 디자인 합니다. 그는 B언어를 BCPL을 바탕으로 만들었다.* BCPL이란? : 1960년대 중반.. 2017. 4. 3.
Programming Projects in Chapter 2 1.123456789101112#include int main(void){ printf(" *\n"); printf(" *\n"); printf(" *\n"); printf(" *\n"); printf("* *\n"); printf(" * *\n"); printf(" *\n"); return 0;}cs 2.123456789#include #define _USE_MATH_DEFINES#include int main(void){ printf("%f\n", (4.0f/3.0f)*M_PI*pow(10,3)); return 0;} Colored by Color Scriptercs3.12345678910111213#include #define _USE_MATH_DEFINES#include int main(void).. 2017. 3. 29.