본문 바로가기

Programming

(136)
[Project Euler] Problem 014 12345678910111213141516171819202122232425262728293031323334353637public class Problem014 { public static void main(String[] args) { System.out.println(run()); } public static String run() { long temp; long result = 0; int max = 0; int count; for(int i = 2; i max) { max = count; result = i; } } return Long.toString(result); } }Colored by Color Scriptercs 정답: 837799실행 시간: 0.6초 단순하게 풀었다. 문제의 내용을 그대..
EXE 파일의 생성 1. 컴퓨터는 네이티브 코드만 실행할 수 있다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include #include int add(int a, int b); int main() { int a = 5, b = 9; char buffer[20]; char title[] = "Add"; sprintf_s(buffer, sizeof buffer, "%d + %d = %d", a, b, add(a, b)); MessageBox(NULL, buffer, title, MB_OK); return 0; } int add(int a, int b) { return (a + b); } Colored by Color Scripter cs 위와 같이 특정 프로그래밍..
void형 포인터 1. void형 포인터 포인터에는 여러가지 형이 있다. double*, int*, short*, 배열 포인터, 함수 포인터, 이중 포인터, … 그런데 아직 언급하지 않는 것이 있는데, 바로 void형 포인터다. void형 포인터 변수 역시 여느 포인터 변수와 마찬가지로 다음과 같이 선언된다. void* ptr; void의 사전적 의미는 공허 또는 빈곳이다. 즉 아무것도 없음을 의미한다. 그래서 반환값이 없는 함수의 반환형을 void로 쓰는 것이다. 그렇다면 void형 포인터는 아무것도 가리키지 않는 포인터일까? 2. 모든 것을 가리킬 수 있는 포인터 void형 포인터는 아무것도 가리키지 않는 포인터가 아니다. 오히려 모든 것을 가리킬 수 있는 포인터다. int형 변수, double형 변수, 심지어는 함수..
함수 포인터 1. 함수의 이름 배열의 이름은 배열의 시작주소를 의미한다. 마찬 가지로 함수의 이름은 함수가 저장된 (메모리의) 주소를 의미한다. 모든 함수는 프로그램 실행 시 메인 메모리(main memory)에 저장된 후 실행된다. 함수의 이름은 이 때의 주소값을 의미하는 것이다. 또한 배열의 이름이 상수이듯이 함수의 이름도 상수다. 2. 함수 포인터 변수의 선언 모든 포인터는 포인터 형이 결정되어야 적절한 선언이 가능하다. 다음과 같은 함수가 있다고 하자. int add(int a, int b); 이 함수의 반환형 선언은 int 고, 매개변수의 선언은 int a, int b 다. 그렇다면 이 함수의 포인터 형은 무엇일까? 함수의 포인터 형은 반환형과 매개변수의 선언 형태를 기준으로 정해진다. 위 함수의 포인터 선..
[Project Euler] Problem 013 (너무 길어서 캡처 대신 텍스트 복사) 아래에 50자리 숫자가 100개 있습니다. 이것을 모두 더한 값의 첫 10자리는 얼마입니까? 더보기 37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 91942213363574161572522430563301811072406154908250 23067588207539346171171980310421047513778063246676 89261670696623633820136378418383684178734361726757 28112879812849..
2차원 배열과 포인터 1. 2차원 배열 이름의 포인터 형 1차원 배열 이름은 상수 싱글 포인터다. 그럼 2차원 배열 이름은 더블 포인터일까? 다음과 같이 선언된 2차원 배열이 있다고 하자. int arr[3][3]; 당연히 아니다. 2차원 배열의 이름은 인덱스 기준으로 [0][0]의 주소, 즉 시작 주소다. 또한 arr[n] 은 arr 의 n 행의 시작 주소를 의미한다. 그렇다면 arr[0] 과 arr 은 같은 걸까? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include int main() { int arr[3][3]; printf("arr: %p\n", arr); printf("arr[0]: %p\n", arr[0]); printf("&arr[0][0]: %p\n\..
[Project Euler] Problem 012 (Java)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647public class Problem012 { public static void main(String[] args) { long beginTime = System.currentTimeMillis(); System.out.println(run()); long endTime = System.currentTimeMillis(); System.out.println((endTime - beginTime) + "ms"); } public static String run() { int n = 0; int triNum = 0; int max = 0; int ..
[Project Euler] Problem 011 (Java)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677package q001_q025; public class Problem011 { private static int[][] SQUARE = { { 8, 2,22,97,38,15, 0,40, 0,75, 4, 5, 7,78,52,12,50,77,91, 8}, {49,49,99,40,17,81,18,57,60,87,17,40,98,43,69,48, 4,56,62, 0}, {81,49,31,73,55,79,14,29,93,71,40,67,53,88..