s[::-1]
저걸로 끝!
'Developing' 카테고리의 다른 글
USACO Training - Milking Cows (0) | 2007.11.24 |
---|---|
이클립스에서 EUC-KR 문서 이용 (0) | 2007.11.08 |
Visual C++ 프로젝트 정리하기 (0) | 2007.05.15 |
s[::-1]
저걸로 끝!
USACO Training - Milking Cows (0) | 2007.11.24 |
---|---|
이클립스에서 EUC-KR 문서 이용 (0) | 2007.11.08 |
Visual C++ 프로젝트 정리하기 (0) | 2007.05.15 |
이클립스에서 EUC-KR 문서를 사용하기 위해서는 다음과 같이 하면된다.
파이썬 문자열 뒤집기 (0) | 2007.11.17 |
---|---|
Visual C++ 프로젝트 정리하기 (0) | 2007.05.15 |
작성일자가 4월 1일인 RFC (0) | 2007.04.14 |
이클립스에서 EUC-KR 문서 이용 (0) | 2007.11.08 |
---|---|
작성일자가 4월 1일인 RFC (0) | 2007.04.14 |
파이의 정의 (0) | 2007.04.03 |
IETF(Internet Engineering Task Force,국제인터넷표준화기구)에서 나온 RFC중 4월 1일에 작성된 문서는 유심히 볼 필요가 있다. 제목만 봐도 좀 이상하지만(예를 들면 SONET to Sonnet Translation이라든지...), 농담조의 내용을 진지하게 적어놓은 센스가 대단하다. 특히, RFC 1149의 경우에는 실제로 구현해본 사람도 있다고 한다.
이런 만우절 RFC는 위키백과에 잘 나와있다.
Visual C++ 프로젝트 정리하기 (0) | 2007.05.15 |
---|---|
파이의 정의 (0) | 2007.04.03 |
The Java Programming Language - 1일차 (0) | 2007.02.03 |
프로그래밍을 하다보면 파이값을 이용할 일이 꽤 있다. 흔히 다음과 같이 정의해서 사용할 것이다.
PI = 3.14
하지만, 그다지 정확한 값이 아니고, 정확한 값을 넣기 위해서 매번 찾아보는 것은 번거로운 일이다.(물론 소수점 이하 10자리 이상을 항상 외우고다니는 일부들에게는 해당되지 않는다 :-) ) 그럴때는 다음과 같이 간단하고 정확한 파이값을 정의할 수 있다.(C언어 기준)
PI = atan(1.0) * 4
작성일자가 4월 1일인 RFC (0) | 2007.04.14 |
---|---|
The Java Programming Language - 1일차 (0) | 2007.02.03 |
USACO Training - Friday the Thirteenth (0) | 2006.09.12 |
class Hello world {- header
public static void main( String[] args ) {
System.out.println("Hello, World");
}
}
class Suit {
final static int CLUB = 1;
final static int DIAMONDS = 2;
final static int HEARTS = 3;
final static int SPADES = 4;
}
class Point {
public double x, y;
}
Point Left = new Point();
Left.x = 1.0;
class Point {
public static int cnt;
}
Point Right = new Point();
Point.cnt = 1;
class Point {
public double x, y;
}
class Pixel extends Point {
Color color;
int col;
public void clear() {
super.clear();
this.col = 0;
color = null;
}
}
class A {
A() {
...
}
}
class A {
{
...
}
}
class A {
static {
...
}
}
class BadDataSetException extends Exception { }
class A {
public int get(int input)
throws BadDataSetException {
...
...
throw new BadDataSetException();
int[] = new int[10];
package net.gnuvill.game;
import java.util.*;
파이의 정의 (0) | 2007.04.03 |
---|---|
USACO Training - Friday the Thirteenth (0) | 2006.09.12 |
PERL에서의 웹 프로그래밍 (0) | 2006.06.03 |
/*
ID: ****
LANG: C
TASK: friday
*/
/*#define __DEBUG__*/
#include <stdio.h>
int main()
{
int period, last, year, leap, i;
int day=0; // 0=Mon ... 6=Sun
int count[7];
for(i=0 ; i<7 ; i++)
count[i] = 0;
#ifndef __DEBUG__
FILE *fin;
FILE *fout;
fin = fopen("friday.in","r");
fout = fopen("friday.out","w");
fscanf(fin,"%d",&period);
#else
do{
printf("Enter period(N years) : ");
scanf("%d",&period);
}while(period<=0 || period>400);
#endif
last = 1900+period;
for(year=1900 ; year<last ; year++)
{
if(year%100 == 0)
{
if(year%400 == 0)
leap = 1;
else
leap = 0;
}
else if(year%4 == 0)
leap = 1;
else
leap = 0;
count[day]++;
day = (day+3)%7;
count[day]++;
day = (day+leap)%7;
count[day]++;
day = (day+3)%7;
count[day]++;
day = (day+2)%7;
count[day]++;
day = (day+3)%7;
count[day]++;
day = (day+2)%7;
count[day]++;
day = (day+3)%7;
count[day]++;
day = (day+3)%7;
count[day]++;
day = (day+2)%7;
count[day]++;
day = (day+3)%7;
count[day]++;
day = (day+2)%7;
count[day]++;
day = (day+3)%7;
}
#ifndef __DEBUG__
for(i=0 ; i<6 ; i++)
fprintf(fout,"%d ",count[i]);
fprintf(fout,"%dn",count[6]);
fclose(fin);
fclose(fout);
#else
for(i=0 ; i<7 ; i++)
printf("%d ",count[i]);
#endif
return 0;
}
1900년부터 시작해서 주어진 몇년의 기간동안 날짜가 13일이 되는 요일의 수를 구하는 프로그램인데, 조금 생각하고 코딩을 했더니 결과가 너무 지저분해졌다. 게다가 1월부터 12월까지 달마다 요일을 구하는 부분에서 날짜를 미리 계산해서 넣는 만행을...;
저부분을 제대로 하자면, 각 달의 날짜수를 배열같은 곳에 저장해둔 다음, 윤년을 판단해서 윤년일 경우 2월 계산부분에 하루를 더해주고, 반복문으로 해결을 볼수 있을 듯한데, 일단 이걸로 이번문제는 통과..;;; 더 고치기가 귀찮다.
The Java Programming Language - 1일차 (0) | 2007.02.03 |
---|---|
PERL에서의 웹 프로그래밍 (0) | 2006.06.03 |
USACO Training - What Time Is It? (0) | 2006.05.15 |
이런저런 문제들로 정신없는 와중에 새로운 일을 떠 맡았다. PHP와 펄을 이용한 간단한 웹 프로그래밍이었는데, 두가지 경우 모두 FORM을 이용해서 값을 넘겨받아야 했다. PHP의 경우는 그냥 간단히 name과 동일한 변수로 받아서 해결되었지만, 펄의 경우에는 약간 해줘야할 것이 있어서 머리가 아팠다. 아무래도 PHP처럼 원래 CGI 전용으로 나온 스크립트가 아니라서 그런가보다.
어쨌든 아래와 같은 방법으로 해결했다.
예제 : 간단한 사칙연산 프로그램
#!/usr/bin/perl
print "Content-type: text/htmlnn";
&parse;
$first = $FORM{'first'};
$second = $FORM{'second'};
print "<html><head><title>계산 결과</title></head><body>";
print "<h1>계산 결과</h1><br />";
print "<table><tr><td>더하기</td><td>";
print $first+$second;
print "</td></tr><tr><td>빼 기</td><td>";
print $first-$second;
print "</td></tr><tr><td>곱하기</td><td>";
print $first*$second;
print "</td></tr><tr><td>나누기</td><td>";
print $first/$second;
print "</td></tr><tr><td>나머지</td><td>";
print $first%$second;
print "</td></tr></table></body></html>";
sub parse {
if($ENV{'REQUEST_METHOD'} eq "GET") {
$buffer = $ENV{'QUERY_STRING'};
}
else {
read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
@pairs = split(/&/,$buffer);
foreach (@pairs) {
($name, $value) = split(/=/,$_);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$FORM{$name} = $value;
}
}
parse 부분이 핵심 부분인데, 거의 정형화되어있어서 다들 copy&paste한다고 한다.
USACO Training - Friday the Thirteenth (0) | 2006.09.12 |
---|---|
USACO Training - What Time Is It? (0) | 2006.05.15 |
USACO Training - Barn Repair (0) | 2006.05.09 |
/*
ID: ****
LANG: C
TASK: clock
*/
#define __DEBUG__
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* itoc(int num);
int main()
{
char* temp;
char time[6];
int hour;
int min;
char out[100];
#ifndef __DEBUG__
FILE *fin;
FILE *fout;
fin = fopen("clock.in","r");
fout = fopen("clock.out","w");
fscanf(fin,"%s",time);
#else
printf("Input time : ");
scanf("%s",time);
#endif
temp = strtok(time,":");
hour = atoi(temp);
temp = strtok(NULL,":");
min = atoi(temp);
switch(min)
{
case 0:
sprintf(out,"%s o'clock",itoc(hour));
break;
case 15:
sprintf(out,"Quarter past %s",itoc(hour));
break;
case 45:
sprintf(out,"Quarter to %s",itoc(hour%12+1));
break;
default:
if(min>45)
sprintf(out,"%s to %s",itoc(60-min),itoc(hour%12+1));
else
sprintf(out,"%s %s",itoc(hour),itoc(min));
}
out[0]=toupper(out[0]);
#ifndef __DEBUG__
fprintf(fout,"%sn",out);
fclose(fin);
fclose(fout);
#else
printf("%sn",out);
#endif
return 0;
}
char* itoc(int num)
{
char* retval;
retval = (char*)malloc(sizeof(char)*20);
if(num<20)
{
switch(num)
{
case 1: return "one";
case 2: return "two";
case 3: return "three";
case 4: return "four";
case 5: return "five";
case 6: return "six";
case 7: return "seven";
case 8: return "eight";
case 9: return "nine";
case 10: return "ten";
case 11: return "eleven";
case 12: return "twelve";
case 13: return "thirteen";
case 14: return "fourteen";
case 15: return "fifteen";
case 16: return "sixteen";
case 17: return "seventeen";
case 18: return "eighteen";
case 19: return "nineteen";
default: return "";
}
}
else
{
switch(num/10)
{
case 2:
sprintf(retval,"twenty");
break;
case 3:
sprintf(retval,"thirty");
break;
case 4:
sprintf(retval,"forty");
break;
case 5:
sprintf(retval,"fifty");
break;
}
switch(num%10)
{
case 0:
break;
case 1:
strcat(retval,"-one");
break;
case 2:
strcat(retval,"-two");
break;
case 3:
strcat(retval,"-three");
break;
case 4:
strcat(retval,"-four");
break;
case 5:
strcat(retval,"-five");
break;
case 6:
strcat(retval,"-six");
break;
case 7:
strcat(retval,"-seven");
break;
case 8:
strcat(retval,"-eight");
break;
case 9:
strcat(retval,"-nine");
break;
}
}
return retval;
}
상당히 간단한 문제였다.
PERL에서의 웹 프로그래밍 (0) | 2006.06.03 |
---|---|
USACO Training - Barn Repair (0) | 2006.05.09 |
USACO Training - Mixing Milk (0) | 2006.05.03 |
/*
ID: ****
LANG: C
TASK: barn1
*/
/*#define __DEBUG__*/
#define MAXSTALL1 200+1
#include <stdio.h>
int main()
{
int max, stal, cow;
int i, temp;
int before = 0;
int total = 0;
int ival[MAXSTALL1];
int status[MAXSTALL1];
for(i=0 ; i<MAXSTALL1 ; i++)
{
ival[i] = 0;
status[i] = 0;
}
#ifndef __DEBUG__
FILE *fin;
FILE *fout;
fin = fopen("barn1.in","r");
fout = fopen("barn1.out","w");
fscanf(fin,"%d %d %d",&max,&stal,&cow);
#else
printf("Input max & stall & cow : ");
scanf("%d %d %d",&max,&stal,&cow);
#endif
for(i=0 ; i<cow ; i++)
{
#ifndef __DEBUG__
fscanf(fin,"%d",&temp);
#else
scanf("%d",&temp);
#endif
status[temp] = 1;
}
for(i=0 ; i<=stal ; i++)
{
if(status[i] == 1)
{
if(before != 0)
ival[i-before-1]++;
before = i;
}
}
max--;
for(i=stal ; i>0 ; i--)
{
if(max > 0)
{
if(ival[i] >= max)
{
total += (ival[i] - max)*i;
max = 0;
}
else
max -= ival[i];
}
else
total += ival[i]*i;
}
#ifndef __DEBUG__
fprintf(fout,"%dn",total+cow);
fclose(fin);
fclose(fout);
#else
printf("%dn",total+cow);
#endif
return 0;
}
저번 문제와 비슷한 접근 방법으로 문제를 해결했다.
주어진 갯수의 널판지로 최소한의 길이의 널판지를 이용해서 헛간을 고치겠다는 것이 문제였다. 비어있는 칸은 반드시 고칠 필요가 없고, 소가 있는 칸만 고치면 되므로, 소가 있는 칸 사이의 넓이가 가장 넓은 곳 부터 비우는 방식으로 널판지 갯수를 맞췄다.
소가 있는 칸 번호가 반드시 순서대로 들어오는 것은 아니므로 연산이 더 필요했다.
PERL에서의 웹 프로그래밍 (0) | 2006.06.03 |
---|---|
USACO Training - What Time Is It? (0) | 2006.05.15 |
USACO Training - Mixing Milk (0) | 2006.05.03 |