본문 바로가기

프로그래밍

코드 컨벤션. 코드를 구성해 나가는 자신만의 방식. 1. - 언어별 코딩 타입. 각자 프로그래머 마다 자신만의 코딩방식을 가지고 있습니다. 그리고 그 방식은 언어에 따라 차이가 나기도 하지요. class what{ public static void main(){ System.Out.println("이건 뭥미?"); } } 자바 특유의 코딩 스타일입니다. 이클립스에서도 코드 컨벤션을 이런 타입으로 지원하고 있고, 자바의 특징점인 "내부 무명 클래스(Inner Anonymous Class)"에도 적합한 코딩 스타일입니다. #include using namespace std; void main() { cout 더보기
PKU 2017, Speed Limit. AC get! #include int n,s,t1,t2,sum; int main() { while(scanf("%d",&n)) { if(n == -1) break; while(n--) { scanf("%d%d", &s, &t2); sum += s * (t2 - t1); t1 = t2; } printf("%d miles\n", sum); sum = 0; t1 = 0; } return 0; } 이번 문제도 좀 쉽나... 더보기
PKU 2027. No Brainer. AC get~-_- - 101Byte #define s(x) scanf("%d",&x) main(x,y,n){for(s(n);n--;s(x)&s(y)&puts(x 더보기
PKU 2027. No Brainer. AC get!~ 91Byte. main(x,y,n){for(scanf("%d",&n);n--;puts(x 더보기
PKU 2027. No Brainer. AC 94B main(x,y,n){for(scanf("%d",&n);n;puts(x 더보기
PKU 2027. No Brainer. AC get! k;main(i,j){scanf("%d",&i);while(i--){scanf("%d%d",&j,&k);puts(j 더보기
Recursion Vs Iteration. -> Iteration win! int what(int a) { if (a == 0) return a; else return what(a - 1); } int main() { what(10); } .... "뭡니까 저건 -_-;?" 하는 질문이 나올 법한 이상한 코드입니다. .... 이건 어떄요? int main() { int i; for (i = 0; i < 10; i++) } .... 같은 코드에요. 왠진 아시죠?-_-; 근데 제목이랑 관련이 있어 보이기도 하고 아니기도 하고... 속도도 별 차이 없어보이는데... 왜 붙여놨을까요? if문의 비교 횟수는 물론, 반복 실행 횟수도 같습니다. 그.렇.지.만 Iteration이 압도적으로 빠릅니다. 지금이야 데이터가 훨씬 적지만, 대충 10만개만 되도 차이가 확연히 날 겁니다. C언어 -.. 더보기
PKU 1145, UVa 112 Tree Summing 입력 샘플 22 (5(4(11(7()())(2()()))()) (8(13()())(4()(1()())))) 20 (5(4(11(7()())(2()()))()) (8(13()())(4()(1()())))) 10 (3 (2 (4 () () ) (8 () () ) ) (1 (6 () () ) (4 () () ) ) ) 5 () 0 () -1 (-1()()) 77 (77(1()())()) -77 (-77()()) -7 (1 (-6 (2 (1 ()()) (-4 ()(1 (1 ()())(-1 ()()) ) ) ) () ) () ) 0 () 3 (3 (4 (5 ()()) (8 (-3 (-7 ()())())(-4 ()(-8 ()())))) (6 (6 (-5 ()())(-6 ()(-9 ()())))(7 ()()))) 0 (1() .. 더보기
Tackle to Mr.K's Solution.(PKU 1145) #include #include #define SIZE 300 typedef enum storeType { NONE, NUMBER, LETTER, BRANCH, LEAF } storeType; typedef struct { int nPart; char cPart; storeType status; } card; /* status의 내용을 바꿔주는 것만으로 int형과 char형을 자유자재로 다룰 수 있어서 앞·뒤 뒤집는게 쉬운 card에 비유, 디버깅이 불편하다는 것이 단점 */ void main() { int searchKey; char inputStr[ SIZE ]; card adjusted[ SIZE ]; card stack[ SIZE ]; card temp[ SIZE ]; int compare = 0.. 더보기
주로 사용할 프로그래밍 언어를 고를 방법! 프로그래밍 언어는 정말 가지각색 입니다. 절차지향을 외치는 C언어, 객체지향을 외치면서 껍데기만 객체지향, 내부는 객체지향을 은근히 파괴하는 면이 있는 Java, 객체지향과 절차지향을 마음대로 왔다갔다 거릴 수 있도록 설계된 C++, Java의 단점을 상당수 커버하기 위해 나온 C#, 머리 빠개지도록 굴려야 프로그램 하나 나오는 Assembly. #include int main() { printf("헬로우요 C언어 -_-!\n"); return 0; } C언어의 Hello World! 코드입니다. 간략하지요? 이 C언어의 장점은 '스피드'와 '하드웨어 컨트롤링'입니다. OS들을 보면 C언어로 만들어진 것이 많지요. 윈도우 95~98, me와 리눅스가 C로 만들어져 있습니다. 윈도우즈 me의 환상적인 부팅.. 더보기
UVa. 112, PKU 1145. Tree Summing. AC get! main() { int st[10000], len, i, sum, lev, cp, f; char temp; while (scanf("%d", &len) != -1) { lev = 0; sum = 0; f = 0; while (1) { while ((temp = getchar()) != '(') { if (temp == ')') { f++; if (f == 4) { if (sum == len) { cp = 1; } } sum -= st[lev--]; if (!lev) { goto a; } } } lev++; f++; if (scanf("%d", &i)) { st[lev] = i; sum += i; f = 0; continue; } else { st[lev] = 0; while (getchar() != ').. 더보기
UVa. 112, PKU 1145. Tree Summing. 트리 합계?! 배경지식 LISP는 FORTRAN과 함께 최초의 고수준 프로그래밍 언어중 하나로, 현재까지 쓰이는 언어중 가장 오래된 것중 하나이다. 리스트나 트리 같은 LISP의 트리 구조는 현재까지도 쉽게 채용되어 잘 사용되고 있다. 이 문제는 LISP의 S-표현식의 방식에 근거해 이진 트리를 읽어들이는 문제와 관련이 있다. 문제 정수로 구성된 이진 트리를 입력받아서 루트-리프의 루틴중 원소들의 합이 가장 큰 루틴을 찾아내는 프로그램을 기술하라. 아래 예시에서는 각 루틴의 값이 27, 22, 26 18이다. 이진트리는 LISP의 S-표현식에서 다음과 같이 구성한다. 빈 트리 ::= () 트리 ::= 빈 트리 (정수 트리 트리) 위 예시의 트리 다이어그램을 표현식에 맞추어 바꾸면 이와 같다. (5 (4 .. 더보기
UVa. 112, PKU 1145. Tree Summing. Tree Summing Background LISP was one of the earliest high-level programming languages and, with FORTRAN, is one of the oldest languages currently being used. Lists, which are the fundamental data structures in LISP, can easily be adapted to represent other important data structures such as trees. This problem deals with determining whether binary trees represented as LISP S-expressions possess a.. 더보기
프로그래머들의 지적 유희? 장난? 직장 상사에게 혼나는 법? main(n){gets(&n);putchar(n%85+5);} 하암... 비주얼 스튜디오 6.0, 혹은 gcc나 ANSI C 표준을 따르는 컴파일러에서 작동하는 코드입니다. (비주얼 스튜디오 닷넷은 ANSI C 표준이 아닙니다.) 아 참, 저게 뭐하는 거냐구요? ....... 두 개의 한자리 양의 정수를 입력받아 합을 출력하는 프로그램 입니다. ....... 직장 상사한테 뺨때기 한대 맞기 딱 좋죠? 것도 합이 두 자리 수가 되면 답이 안나와요. -_-; 두 자리 수가 될 경우 나오게 하는 방법이 있긴 하지요. printf를 활용 하되, 좀 색다른 방법을 써야 합니다. .... 저 코드가 어떻게 돌아가느냐구요? ....... C언어 표준을 따르니 돌아가지요 뭐 -_-; #include 를 빼도 gets와.. 더보기
프로그래밍 언어? 외국어? 흔히들 많이 하는 오해. "프로그래밍은 이과 과목이고, 이과 애들이 압도적으로 잘 해." ........ 전혀 그렇지 않습니다. 프로그래밍은 "컴퓨터와 대화하는 과정"이고, 프로그래밍 언어는 "컴퓨터와 대화하는 언어"입니다. 한마디로, "프로그래밍 언어"란 "외국어"의 일종이라는 겁니다. 프로그래밍 언어의 간략화가 맺어낸 가장 간략한 베이직언어. 정말 "영어로 컴퓨터와 대화하는" 느낌을 받을 수 있습니다. 아주 귀찮은것 하나하나 조차 직접 구현할 필요 없이 OCX를 끌어다 쓴다거나 함으로써 처리가 가능하니까요. 자.... 다들 그러시죠? "영어는 문과가 훨씬 잘해." 라고. 뭐..... 전 여태까지 이과쪽 사람들이 영어를 훨씬 잘하는걸 봐 와서 이게 틀렸다고 생각하지만...;; 영어를 문과쪽 사람들이 더.. 더보기
프로그래밍의 이해 - C언어와 함께하는 Hello World!? #include void main() { printf("Hello World!\n"); } 이전 포스트보다 좀 더 간단한 예제. Hello World! 혹은 Hello C! 라고 불리우는 예제입니다. 이번에 새로 나온건 '\n'. 그리고 전에는 printf() 내부에 "" 이후 콤마로 구분해 출력 형식에 집어넣을 변수가 있었는데 이번엔 사라졌지요? printf()함수의 특성은 ()안에 인자(함수 구동시 사용하는 인풋)의 갯수가 무한대라는 것입니다. 최소 1개(""로 쌓인 출력할 문장), 최대 무한대. 뭐... 사실 최대 갯수가 정해져 있긴 하지만, 그걸 다 넣을 정도라면 차라리 여러 줄로 나눠 쓰는게 보기에도 편하고 쓰기에도 편하답니다. printf() 내부에 이번엔 "Hello World!\n"만 들어.. 더보기
프로그래밍으로 다가가는 한 걸음. 프로그래밍을 이해하기. 프로그래밍은 자기가 직접 세계를 만들어나가는 과정입니다. 그런데 막상 다가가면 다들 어렵다고 물러서더라구요. 단지 우리가 생활할 때 취하는 행동들을 자세하게 늘어놓는 것일 뿐인데 말이지요. 가령 예를 들면, "두 수를 입력받아 출력하는 프로그램을 작성하라." 라고 했을때, 우리는 가장 기본적인 부분부터 처리해 나가야 합니다. 일단 프로그램의 뼈대를 갖춰주어야지요. void main() { } 프로그램의 뼈대. "난 프로그램이다아~~"라고 외치는 void main()이 만들어졌습니다. 이제 저 대괄호({와 })사이에 하나하나의 명령을 기술해야 하지요. 자. 입력을 받아야 하죠? 입력과 출력에 관한 부분은 stdio.h 라는 파일에 기술되어 있습니다. 사용하기 위해 이 친구를 불러들여야 합니다. #inclu.. 더보기