본문 바로가기

프로그래밍

PKU 1953. World Cup Noise World Cup Noise Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5818 Accepted: 2851 Description Background "KO-RE-A, KO-RE-A" shout 54.000 happy football fans after their team has reached the semifinals of the FIFA World Cup in their home country. But although their excitement is real, the Korean people are still very organized by nature. For example, they have organized huge trumpets.. 더보기
Generic Algorithm with C++, 02 - Template Vector. 우후. 오늘도 야근이 없었습니다만... 라인이 몇번 연타로 끊겨먹는 바람에 날뛰었더니 손이 쪼까 개판이네요. 오타 있음 꼭 지적해 주시길... -_-; ------------------------------------------------------------------------------------- Vector 템플릿은 이전 포스트에서 코드 예시로 보였던 것처럼 vector를 인클루드 시켜야 합니다. vector.h가 아니니 주의하시길... Vector 템플릿 클래스는 "동적 배열" 이라고 보시면 됩니다. 가장 간단한 것부터 보도록 하지요. #include #include using namespace std; int main() { vector va1; cout 더보기
Generic Algorithm with C++, 01 - Introduction to STL. 새로운 시리즈로군요. 이번엔 좀 길게 가야 할듯... -_-;; 이번 오는 주 부터는 야근이 없다니 vi의 분석 포스트도 재개가 가능하지 싶습니다. ------------------------------------------------------------------------------------------ STL은 Standard Template Library의 약자입니다. 앞에 머릿글자만 따서 STL 이 되지요. 근데, 라이브러리는 라이브러리인데 템플릿은 도대체 뭐냐? 라고 물으신다면... 뭐... -_-;; 뭐라 설명드려야 할 지 모르곘군요. 대략 그냥 뭐 그러려니 해주시길... -_-; 제대로 설명하자면 페이지 할애량이 지나치게 많아지므로, 개략적인 설명만 하겠습니다. Template 같은 뼈대.. 더보기
PKU 2845. 01000001 01000001 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5031 Accepted: 1654 설명 이진수를 더하는 것은 매우 쉬운 일이며, 일반적인 십진수의 덧셈과 매우 유사합니다. 십진수를 더할때와 같이, 당신은 한 번에 한 줄에 있는 비트(아라비아 숫자)들을 오른쪽에서 왼쪽으로 씁니다. 십진수끼리의 덧셈과는 달리, 이진수들을 더할때에 기억해야 할 것이 몇가지 있습니다 : 0 + 0 = 0 1 + 0 = 1 0 + 1 = 1 1 + 1 = 10 1 + 1 + 1 = 11 십진수의 덧셈과 같이, 한 줄에 더해진 총합이 두 자리 비트(두 자리 수)일 경우 의미가 적은 숫자는 총 합의 부분으로 쓰여지고 의미가 큰 숫자는 왼쪽 줄로 '옮겨집니다'.. 더보기
PKU 2845. 01000001 01000001 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5031 Accepted: 1654 Description Adding binary numbers is a very simple task, and very similar to the longhand addition of decimal numbers. As with decimal numbers, you start by adding the bits (digits) one column at a time, from right to left. Unlike decimal addition, there is little to memorize in the way of rules for the addit.. 더보기
PKU 1089. Intervals. AC get.... -_-; #include #include #include using namespace std; typedef struct { int start, end; }dis; int cmp(const void * a, const void * b) { dis * first = (dis *)a; dis * second = (dis *)b; if (first->start == second->start) { return first->end - second->end; } return first->start - second->start; } dis list[50000]; int main() { int n, i, min, max; cin >> n; i = 0; while(i < n) { scanf("%d%d", &(list[i].sta.. 더보기
PKU 1089. Intervals. WA. #include #include #include using namespace std; typedef struct { int start, end; }dis; int main() { list a; list::iterator InnerIt, OuterIt; bool isIn; dis temp; int n; cin >> n; while(n--) { isIn = false; cin >> temp.start >> temp.end; a.push_back(temp); } for (OuterIt = a.begin(); OuterIt != a.end(); OuterIt++) { for (InnerIt = a.begin(); InnerIt != a.end(); InnerIt++) { if (OuterIt == InnerIt.. 더보기
PKU 1089. Intervals 구간 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2973 Accepted: 1158 설명 n개의 폐구간 [ai; b i], i=1,2,...,n 이 주어졌습니다. 이 구간들의 합은 교차하지 않는 폐구간들의 쌍으로 표현될 수 있습니다. 당신이 해야 할 일은 이러한 구간들의 표현을 최소한의 숫자로 하는 것입니다. 이렇게 표현할 구간들은 오름차순으로 출력되어야 합니다. 오름차순이란 a 더보기
PKU 1089. Intervals Intervals Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 2973 Accepted: 1158 Description There is given the series of n closed intervals [ai; b i], where i=1,2,...,n. The sum of those intervals may berepresented as a sum of closed pairwise non−intersecting intervals. The task is to find such representation with the minimal number of intervals. The intervals of this representation sho.. 더보기
PKU 3685. Matrix. Solution. #include #include int main() { int n; __int64 N, M; __int64 min, max; __int64 x, j; __int64 sum; __int64 det, cal_1, cal_2; const __int64 w = 100000; scanf("%d", &n); while (n--) { scanf("%I64d%I64d", &N, &M); max = w * w * 10; min = -1 * max; while (min < max) { x = (min + max) / 2; if (x == max) { x--; } sum = 0; for (j = 1 ;(j = cal_1) { sum += (cal_2 - cal_1 + 1); } } if (sum < M) { min = x .. 더보기
프로그램을 만들어 가는 과정. 2. 만들어보자! 저번 주 한번 쉬고 다시 올라오는 포스트군요. 익스플로러가 미쳐버려서 글 올리는데 시간이 좀 걸리지 싶습니다. 겨우 텍스트 몇자 끄적이는데 렉이 걸리다니... ㄱ- ---------------------------------------------------------------------------------------- 프로그래머가 프로그램을 만들기 위해 일단 계획을 하여 설계를 한다, 이게 저번 포스트의 내용이었지요. 예압~ 설계를 하면 개발에 돌입해야지요? 프로그램의 개발 방식에는 여러가지가 있습니다. 1. 팀 개발 2. 개인 개발 ....... 농담이구요. -_- 1. TDD(Test Driven Development) 2. 애자일 방법론 3. 모듈 분할 방법 ..... 뭐 이름이 거창하기들 하긴.. 더보기
[Dlbo's 포스트 공지] ㄲㄲ 다음주엔 2개 갑니다. 리턴군 미안. 나혼자 됐다. 미니간담회가 컸던건가. -_-; 고로 다음주 화요일에는 "프로그램을 만들어가는 과정"과 "오픈소스축제, WoC의 W데이"편이 함께 올라갑니다. 더보기
PKU 1298. The hardest problem ever. AC get -_- #include #include int main() { char start[256], temp[256]; int i; while(gets(start)) { if (!strcmp(start, "ENDOFINPUT")) { break; } gets(temp); for (i = 0; i 'E' && temp[i] 더보기
PKU 1298. The Hardest Probelm Ever 지금껏 가장 힘들었던 문제 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8523 Accepted: 4866 설명 Julius Caesar는 음모와 위험이 살아숨쉬는 시대에 살았습니다. Caesar가 겪었던 가장 힘들었던 상황은 그 스스로 살아남는 것이었습니다. 살아남기 위해서 그는 최초의 암호라고 불릴 수 있는 것을 만들었습니다. 이 암호는 믿을수 없을 정도로 완벽해서 어떻게 작동하는지 알지 않고서는 누구도 그 원리를 밝혀내지 못했습니다. 당신은 Caesar의 군대의 부사령관입니다. 당신의 임무는 Ceasar에게 온 메세지를 해독하여 사령관에게 전달하는 것입니다. 암호는 간단합니다. 평문의 각 문자를 오른쪽으로 다섯번 움직이면 안전한 메시지, .. 더보기
PKU 1298. The Hardest Problem Ever The Hardest Problem Ever Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 8523 Accepted: 4866 Description Julius Caesar lived in a time of danger and intrigue. The hardest situation Caesar ever faced was keeping himself alive. In order for him to survive, he decided to create one of the first ciphers. This cipher was so incredibly sound, that no one could figure it out without knowing .. 더보기
[비정기포스트] Simple VI 분석! - 1. 구조 살펴보기. 우후... 저희 프로젝트 팀의 최초 Simple VI의 기본 구조 도안이었습니다. 이후 변경되어 8장으로 늘어났지요. vi가 뭐냐구요? 리눅스의 콘솔 라인에디터 랍니다. 요즘은 VIM(VI iMproved)가 나와서 VI대신 VIM이 그 자리를 차지하고 있지만, 프로그래머들이 적응만 하면 정말 편하기 그지없는 텍스트에디터입니다. 일단 vi는 3가지의 상태를 가지고 있습니다. 일반 페이지뷰 모드와, ed명령어를 이용하는 ed모드, 편집모드. 페이지뷰 모드에서는 단순히 커서를 이동시켜 원하는 페이지를 볼 수만 있습니다. 반면 ed모드에서는 어떠한 커서조작도 불가능하나 s, x, dd등의 명령을 통해 편집을 할 수 있지요. 편집모드에서는 해당 커서 위치에서 직접 편집을 합니다. i, a, o의 3가지 모드가 .. 더보기
PKU 3438. Look and Say. AC get~ -_-! #include #include using namespace std; int main() { string temp; int cases, i, cnt, lastindex; cin >> cases; while (cases--) { i = 1; cnt = 1; getline(cin, temp); if (temp == "") { cases++; continue; } while (temp[i] != '\0') { if (temp[i - 1] == temp[i]) { cnt++; } else { cout 더보기
프로그램을 만들어 가는 과정. 1 - 무엇을 만들고 어떻게 만들까? ㅁ_ㅁ 지난번의 "객체지향 이야기"는 더 이상의 이야기를 하자면 "디자인 패턴"이라는 복잡한 분야로 들어가야 하는데 이는 이해하기도 상당히 난해하므로 일단 접어둡니다. 객체지향의 기본도 절차지향이므로 이번 포스트 부터는 절차지향과 객체지향의 공통분모인 프로그램의 설계에 대해 언급하겠습니다. --------------------------------------------------------------------------------------- 프로그래밍을 처음 공부하는 사람이나 조금 했던 사람이나 많이 하는 사람이나 모두 공통적인 고민을 가지고 있습니다. "뭘 만들지?" .... 예. 그렇습니다. -_- 우리에게 가장 중요한건... 뭘 만드느냐 입니다 -_-; 프로그램을 도대체 무엇을 만들 것이느냐! .. 더보기
PKU 3438. Look and Say 본 뒤 말하기 Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2978 Accepted: 1905 설명 본 뒤 말하는 수열은 다음과 같습니다. 아무 숫자열 하나를 가지고 시작하는데, 그 다음으로 오는 각각의 부분열 원소는 그 전의 숫자열을 하나씩 '음성으로' 표현하는 것입니다. 예를 들면, 숫자열 122344111 은 "한 개의 1, 두 개의 2, 한 개의 3, 두 개의 4, 세 개의 1." 로 읽어지므로 그 다음에 올 수열은 1122132431입니다. 비슷하게, 숫자열 101은 1111111111 다음으로 오게 됩니다. 하지만, 어떤 숫자열을 보고 그 전의 숫자열이 유일한 표현을 가질것이라는 생각은 잘못된 것입니다. 예를 들어, 112213243.. 더보기
PKU 3438. Look and Say Look and Say Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2978 Accepted: 1905 Description The look and say sequence is defined as follows. Start with any string of digits as the first element in the sequence. Each subsequent element is defined from the previous one by "verbally" describing the previous element. For example, the string 122344111 can be described as "one 1, two 2's, .. 더보기
PKU 3030. Nasty Hacks. AC Get -_-.. #include using namespace std; int main() { int N, RespectNot, Respect, AdvPay; cin >> N; while(N--) { cin >> RespectNot >> Respect >> AdvPay; if((Respect - RespectNot) > AdvPay) { cout 더보기
PKU 3030. Nasty Hacks 더러운 핵프로그램(?) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3479 Accepted: 2596 설명 당신은 Nasty Hacks 회사라는, 십대들이 그들의 멍청한 친구들을 골탕먹일때 쓸 수 있는 간단한 소프트웨어를 만드는 곳의 CEO 입니다. 이제서야 첫 상품을 개발하여 판매를 시작해야 합니다. 당신은 가능한한 많은 돈을 벌고 싶고 판매량을 늘리기 위해 광고하는 것을 생각해봅니다. 당신은 기업 분석가를 찾아가, 광고를 할 경우와 광고를 하지 않을 경우 두 경우에 대해서 각각 어떤 수익이 기대되는지를 알고자 합니다. 이제 당신은 주어진 기대 수익을 가지고, 광고를 할 것인지, 하지 않을 것인지를 결심해야 합니다. 입력 입력은 n 케이스들.. 더보기
PKU 3030. Nasty Hacks Nasty Hacks Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3479 Accepted: 2596 Description You are the CEO of Nasty Hacks Inc., a company that creates small pieces of malicious software which teenagers may use to fool their friends. The company has just finished their first product and it is time to sell it. You want to make as much money as possible and consider advertising in order.. 더보기
PKU 2521. How much did the businessman lose. AC get~ main(N,M,P){for(;scanf("%d%d%d%*d",&N,&M,&P),N;printf("%d\n",N-M+P));} 낄낄. 전에 지군 앞에서 숏코딩 보여줬던 문제였는데 이걸 번역하다니 -_-a 더보기
PKU 2521. How much did the businessman lose 사업가는 얼마를 잃었을까 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5019 Accepted: 3449 설명 사업가는 돈을 많이 벌 수 있습니다. 그러나 때때로 거래과정에서 돈을 많이 잃을 수도 있습니다. 예를 들어 한 사업가 Jame 은 몇몇 물품을 개당 40위안에 사서 개당 70위안에 팔 생각을 했습니다. 그리고 한 고객이 와서 물건을 사면서 Jame에게 100위안을 냈고 Jame은 30위안을 거슬러 주었습니다. 당신은 아마도, "Jame이 30위안을 벌었다"라고 할 지 모릅니다. 그러나 불행하게도 Jame은 고객에게 받은 100위안이 가짜였다는 것을 발견합니다. 참 불쌍하지요? 이 경우 Jame은 70위안을 잃었습니다.(40위안(물건의 .. 더보기
PKU 2521. How much did the businessman lose How much did the businessman lose Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5019 Accepted: 3449 Description Businessmen, of course, can make much money. However, sometimes, they would lose money in trading. For example, Jame, a businessman, brought in some goods each cost him 40 yuan and he decided to sell at the price of 70 yuan. Then a customer came to buy one, gave Jame 100 y.. 더보기
PKU 2636. 전기콘센트(?) AC get~-_- #include using namespace std; int main() { int N, K, sum, s; cin >> N; while(N--) { cin >> K; sum = 0; while (K--) { cin >> s; sum += s; sum--; } cout 더보기
PKU 2636. Elecrical Outlets Electrical Outlets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3730 Accepted: 2806 Description Roy has just moved into a new apartment. Well, actually the apartment itself is not very new, even dating back to the days before people had electricity in their houses. Because of this, Roy's apartment has only one single wall outlet, so Roy can only power one of his electrical applianc.. 더보기
PKU 2636. Electrical Outlets 전기 콘센트 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3730 Accepted: 2806 설명 Roy는 새 아파트로 막 이사왔다. 아파트는 사실 새 것은 아니고, 집에 전기가 들어오지 않는 시대로 거슬러 올라간 것처럼 착각할 수 있는 상태이다. Roy의 아파트는 벽붙이형 콘센트가 단 하나뿐이기 때문에 Roy는 그의 가전제품을 한번에 하나씩만 전원을 공급할 수 있다. Roy는 컴퓨터로 일하면서 동시에 TV를 보는 것을 좋아하고, 청소를 하면서 HiFi system 을 큰 소리로 듣는 것을 좋아하기 때문에, 하나의 콘센트만 사용하는 것은 기능이 아니다. 사실 그는 그의 모든 가전제품을 동시에 전부 콘센트에 꽂기를 원한다. 해답은 당연히 powe.. 더보기
리눅스 시스템 프로그래밍 프로젝트 - Mini shall, Simple VI. Linux/Unix 시스템 프로그래밍 팀 프로젝트. 팀원 : 2학년 김보성, 한태웅, 신은수 프로젝트 1. Mini shall. - 팀 구성 : 구조 설계 - 김보성 , >, |의 메타캐릭터 처리. - 와일드 캐릭터 및 Alias 구현시 추가 점수. - 11. 26 기준 프로젝트 진행 상황 - 시간 부족으로 인하여 cat와 와일드 캐릭터, Alias는 구현 힘듬. 요구사항 외의 것으로는 멀티 리다이렉션, 파이프의 구현. 구조 설계자 요구에 따라 C++을 이용해 클래스화 시켜 확장성이 용이한 구조로 코딩. 구조 설계자로부터 넘겨받은 구조 요구 예시는 기본 뼈대만 채택하였음. 2주 코딩기간동안 하루 평균 8시간의 코딩. 프로젝트 2. SImple VI(이하 SIVI) - 팀 구성 : 구조 설계 - 김보성 문.. 더보기