본문 바로가기

For all category

Recursion vs. Iteration : Round 1 부제 : 그대, 피보나치 수열이라고 들어보았는가? Fibonacci Numbers Consider the following sequence of numbers, which begins with two 1's and where each successive term is equal to the sum of the preceding pair of terms. These numbers, called Fibonacci numbers, are arranged in the Fibonacci sequence 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... . If F1 = 1, F2 = 1, F3 = 2, F4 = 3, and so on, then this sequence can b.. 더보기
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.. 더보기
stl vector 사용 vector는 기존 배열의 단점을 유지보수하여 나온............ 설명하자면 긴 글이 되니.. 유동적 배열이라고 보시면 됩니다. 중간의 원소를 삭제하면 저절로 뒤의 나머지 원소들이 앞으로 당겨집니다. 사용하시려면 #include //해주시고 using namespace std; vector v; //이렇게 선언합니다. int대신 float,double,자신이 만든 클래스 등등 넣으시면 됩니다. vector에 값을 넣으려면 push_back()함수를 사용합니다. 가장 마지막에 원소를 추가하는 함수입니다. v.push_back(1);하면 v[0]에는 1이 들어가게 됩니다. vector는 배열처럼 접근할 수도 있죠. v.push_back(2);를 하면 v[1]에는 2가 들어가게 되지요. vector의 .. 더보기
UVa 112, PKU 1145. Tree Summing. [판정:WA] #include #include #define SIZE 1000 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 = .. 더보기
주로 사용할 프로그래밍 언어를 고를 방법! 프로그래밍 언어는 정말 가지각색 입니다. 절차지향을 외치는 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.. 더보기
감기걸린듯 -_-; 개강 첫날(9/1), 아침부터 비가 오는데다 낮기온도 높지 않을거란 얘기, 그리고 비가 그치면 가을날씨가 될 것 같다는 기상청의 말에 난 (덥지 않으니까) 얼씨구나 좋다고 학교를 다녀왔는데 집에 올 때까지만 해도 멀쩡하다가 저녁먹은 뒤에 낮잠 자는 것 마냥 잠깐 자고 일어났더니 목이 부은듯 아프고 콧물도 좀 나더라는.. 결론 : 감기조심하세요~ ㅋㅋ 더보기
Lonewolf dlbo - 포스팅 계획. 내일부터 제대로 된 첫 포스트를 올리게 되겠군요. 저는 주로 "컴퓨터의 구조"와 "프로그램의 동작 원리", 그리고 "숏 코딩"과 "프로그래밍 언어론"으로 구성된 포스트가 주를 이루게 될 것입니다만..... "세미나"가 있다면 세미나를 우선적으로 올릴겁니다. -_-)_b 잇힝~ 이번 주는 출근해서 마감까지 못 끝-_-낸 일을 마쳐야 하니 첫 포스트는 상당히 부실할지도 모릅니다; 역시 사람은 부지런해야 하나봅니다 ㄱ-;; 더보기
포스팅 계획서 안녕하세요 Mr.K입니다// 수학과 소속이고, 프로그래밍을 배우는 것도 이제 곧 3학기째에 들어갑니다만 어쩌다보니 스카웃되어 이렇게 팀블로그의 초석을 다지는 데 한몫 하게 되었습니다 제가 앞으로 포스팅 할 분야는 딱히 어느것이다- 라고 말하긴 그렇고, 수학적으로 정의되어있는 것을 프로그래밍으로 구현해본다거나 '무한'의 범주에 들어있는 것들을 어느정도 끌어내려서 '유한'하게 구현해본다거나 기타 등등, 책을 찾아보고 프로그래밍과 연관시킬 수 있는 것이라 생각되면 전부 시도해볼 생각입니다 그리고 PKU나 UVa에 대해 미리 얘기를 해두자면.. 저같은 경우 '얼마나 빠른가'는 제쳐두고 '얼마나 정확한가'에 신경을 쓰는 편이기 때문에 문제에서 요구하는 답을 내는 것에 집중할 생각입니다 그때문에 전체적인 코드의 형.. 더보기
프로그래머들의 지적 유희? 장난? 직장 상사에게 혼나는 법? main(n){gets(&n);putchar(n%85+5);} 하암... 비주얼 스튜디오 6.0, 혹은 gcc나 ANSI C 표준을 따르는 컴파일러에서 작동하는 코드입니다. (비주얼 스튜디오 닷넷은 ANSI C 표준이 아닙니다.) 아 참, 저게 뭐하는 거냐구요? ....... 두 개의 한자리 양의 정수를 입력받아 합을 출력하는 프로그램 입니다. ....... 직장 상사한테 뺨때기 한대 맞기 딱 좋죠? 것도 합이 두 자리 수가 되면 답이 안나와요. -_-; 두 자리 수가 될 경우 나오게 하는 방법이 있긴 하지요. printf를 활용 하되, 좀 색다른 방법을 써야 합니다. .... 저 코드가 어떻게 돌아가느냐구요? ....... C언어 표준을 따르니 돌아가지요 뭐 -_-; #include 를 빼도 gets와.. 더보기
팀 블로그 디자인 . 하위 카테고리 . 그리고 글 작성 관련 공지. 팀 블로그 관리자 Reuent입니다. 현재 4명 모두 개인별 포스트를 작성할 요일을 정한 것으로 판단되어, 이와 관련해 공지드립니다. 우선, 포스트 작성을 위해 카테고리 세분화가 필요하신 분이 있을 것 같습니다. 일단 저만 해도 포스팅을 위해 하위 카테고리를 작성했으니까요. 혹시 포스팅을 위해 따로 하위 카테고리가 필요하시다면 저에게 연락 주세요. 최대한 빨리 카테고리를 수정해 드리겠습니다. 그리고 팀 블로그 스킨은 블로그 생성시 제가 임의로 찍은 -_-; 겁니다. 만약 스킨이 맘에 안드신다면 이 글 밑에 댓글을 달아 주세요. 모두 다 상의해서 스킨 변경을 하도록 하죠. 기타 건의사항 등이 있으시다면 Suggestion 카테고리에 글 작성해 주시구요. 또 사소한 잡담을 나눌 수 있는 -_-;; Talk .. 더보기
다시 정확하게 재공지. 화, 수, 목, 금 중에 자신이 특집포스트를 올릴 요일을 댓글로 확실히 올려주세요! 만약 이미 정해졌는데 다른 사람과 바꿔야 하겠다! 그런 경우는 해당 요일의 사람과 협의를 본 후 이 글에 댓글로 표기해 주시기 바랍니다. 또한 각자의 글에 구글 애드센스 등의 사용을 허가 할 지 말 지에 대해서도 댓글로 꼭 달아주시구요! 지금은 4명이지만 군대에 가거나 뭐 어떻게 되거나 하는 경우가 있기 떄문에 인원을 충원해 나갈 예정입니다. 프로그래밍 문제 번역작업은 다음주부터 시작하며, 번역된 문제는 언제 올릴지 댓글로 여기에 꼭 달아주세요! 문제 올리자 마자 부터 시작해 그 주가 끝나기 전에는 꼭 문제를 풀어서 PKU에서 AC를 받아내셔야 하고, AC 받았음을 스크린샷으로 찍어주셔서 자신의 솔루션과 함께 올려주세요... 더보기
프로그래밍 언어? 외국어? 흔히들 많이 하는 오해. "프로그래밍은 이과 과목이고, 이과 애들이 압도적으로 잘 해." ........ 전혀 그렇지 않습니다. 프로그래밍은 "컴퓨터와 대화하는 과정"이고, 프로그래밍 언어는 "컴퓨터와 대화하는 언어"입니다. 한마디로, "프로그래밍 언어"란 "외국어"의 일종이라는 겁니다. 프로그래밍 언어의 간략화가 맺어낸 가장 간략한 베이직언어. 정말 "영어로 컴퓨터와 대화하는" 느낌을 받을 수 있습니다. 아주 귀찮은것 하나하나 조차 직접 구현할 필요 없이 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.. 더보기
팀블로그 앞으로 진행 사항 및 합의해야 할 사항. 곽군(Mr K), 들보(lonewolf dlbo), 용호군(reuent), 환타(zFanta)님 네명으로 시작합니다. 기본적으로 화, 수, 목, 금의 4일동안 각자 하루씩을 맡아 컬럼이나 특집포스트 등을 올립니다. 내용은 프로그래밍 관련이되 문제와는 관련 없어도 되고, 자신이 주로 쓸 분야를 정해둡시다. 가령 예를 들면 수학과의 곽군은 수학과 프로그래밍의 관계, 혹은 수학적 내용을, 저(Lonewolf dlbo)는 세미나나 코드의 설계법 등에 대해, 뭐... 대략 이런 식으로 말입죠. 혹은 못 푼 문제를 올려놓고 서로 티격태격 한바탕 배틀 뜨기도 하구요. 그리고 문제 번역은 용호군(reuent), 저(Lonewolf dlbo) 두명이서 번갈아가면서 문제 번역을 진행합니다. 문제 번역후 올리는 타임은 합의.. 더보기