코딩도장 - Four Boxes

문제


4개의 직사각형이 평면에 있는데 밑변이 모두 가로축에 평행하다.

이 직사각형들이 차지하는 면적을 구하는 프로그램을 작성하시오.

 

이 네 개의 직사각형들은 서로 떨어져 있을 수도 있고 겹쳐 있을 수도 있다.

또한 하나가 다른 하나를 포함할 수도 있으며, 변이나 꼭지점이 겹쳐질 수도 있다.

 

입력형식

하나의 직사각형은 왼쪽 아래의 꼭지점과 오른쪽 위의 꼭지점의 좌표로 주어진다.

입력은 네 줄이며, 각 줄은 네 개의 정수로 하나의 직사각형을 나타낸다.

 

첫 번째와 두 번째의 정수는 사각형의 왼쪽 아래 꼭지점의 x좌표, y좌표이고,

세 번째와 네 번째의 정수는 사각형의 오른쪽 위 꼭지점의 x좌표, y좌표이다.

 

단, x좌표와 y좌표는 1 이상이고 1000 이하인 정수이다. 

 

출력형식

화면에 4개의 직사각형이 차지하는 면적을 출력한다. 

 

입력예제

1 2 4 4 
2 3 5 7 
3 1 6 5 
7 3 8 6 

 

출력예제

26


출처 : http://xper.org/wiki/seminar/FourBoxes

'프로그래밍' 카테고리의 다른 글

코딩도장 - VonNeumannAirport  (0) 2010.01.19
코딩도장 - Spiral Array  (0) 2010.01.19
코딩도장 - Primary Arithmetic  (0) 2010.01.19
코딩도장 - 3n + 1  (0) 2010.01.19
WinDbg 출력 결과를 파일로 보내자  (0) 2010.01.07

코딩도장 - Primary Arithmetic

Primary Arithmetic


문제

초등학생들이 여러 자리 수의 덧셈을 배울 대는 한 번에 한 자리씩 오른쪽에서 왼쪽으로 계산하도록 배운다.

그런데 그 자리 숫자의 합이 10을 넘어갈 때 그 윗자리 숫자에 1을 더해주는 것을 배울 때 많은 학생들이 힘들어한다.

 

일련의 덧셈 문제가 주어졌을 때 자리를 올리는 횟수를 세어서 선생님들이 학생을 가르치는데 도움을 줄 수 있는

프로그램을 만들어야 한다.

 

입력

각 행에는 열 자리 미만의 부호없는 정수가 두 개씩 입력된다.

마지막 줄에는 ' 0 0 ' 이 입력된다.

 

출력

마지막 줄을 제외한 각 줄에 대해 주어진 두 수를 더할 때 자리를 올려야 하는 횟수를 계산한 다음,

아래에 주어진 형식대로 결과를 출력한다.

 

입력 견본

123 456 555 555 123 594 0 0

출력 견본

No carry operation. 3 carry operations. 1 carry operation.

'프로그래밍' 카테고리의 다른 글

코딩도장 - Spiral Array  (0) 2010.01.19
코딩도장 - Four Boxes  (0) 2010.01.19
코딩도장 - 3n + 1  (0) 2010.01.19
WinDbg 출력 결과를 파일로 보내자  (0) 2010.01.07
IME를 강제로 활성, 비활성 시키기  (0) 2009.12.24

코딩도장 - 3n + 1

3n+1 문제

 

어떤 수열을 만들어내는 다음과 같은 알고리즘을 생각해보자. 정수 n에서 시작해 n이 짝수이면 2로 나누고, 홀수이면 3을 곱하고 1을더한다.

이렇게 해서 새로 만들어진 숫자를 n으로 놓고 n=1이 될때까지 같은 작업을 계속 반복한다.

예를 들어, n=22 이면 다음과 같은 수열이 만들어진다.

 

                                                22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

 

아직 증명되진 않았지만 모든 정수 n에 대해 이 알고리즘을 적용시키면 결국에는 n=1에 이르게 되는 것으로 추측된다.

그리고 이 가설은 적어도 1,000,000까지의 정수에 대해서는 참이다.

 

n이라는 값이 입력되었을 때 1이 나올 때까지 만들어진 수의 개수(1포함)를 n의 사이클길이라고 한다.

위에 있는 수열을 예로 들면 22의 사이클 길이는 16이다.

i와 j라는 두 개의 수가 주어졌을 때 i와 j 사이의 모든수( i, j 포함 )에 대해 최대 사이클 길이를 구하라.

 

입력

입력은 일련의 정수쌍 i, j로 구성되며 한 줄에 한 쌍의 수가 입력된다.

모든 정수는 1,000,000보다 작고 0보다 크다.

 

출력

각 정수쌍 i와 j에 대해 i와 j를 입력된 순서대로 출력하고 i와 j사이( i, j포함 )의 최대 사이클 길이를 출력한다.

이 세수는 각각 하나씩 스페이스로 구분되어야 하며 세수가 모두 한 줄에 출력되어야 하고, 입력된 각 줄마다 한 줄씩 출력해야 한다.

Sample Input

1 10

100 200

201 210

900 1000

 

Sample Output

1 10 20

100 200 125

201 210 89

900 1000 174 

WinDbg 출력 결과를 파일로 보내자

Windbg에서 덤프를 열게 되면 k 명령을 사용해서 덤프의 CallStack 을 확인할 수 있다.
필요에 따라서는 k 명령을 했을 때 나오는 CallStack정보를 이용하여 다른 작업을 하고 싶을때가 있는데
이럴때는 CallStack 정보를 어떻게 가져오는지에 대해서 찾아보게 된다.

windbg에서 파일로 출력을 바꿀 수 있는게 있는지 찾아보던 중 우연히 실행 옵션에 대해서 알게 되었다
바로 -logo 이라는 옵션인데 옵션 뒤에 " "에 파일명을 넣어주면 windbg에서의 로그가 파일로 기록된다.

windbg -logo "test.txt" ...... 

-c 옵션을 이용하면 windbg가 실행시의 동작을 지정해 줄수 있는데 -logo와 함께 사용하여 
CallStack을 로그에 남기고 windbg를 종료되게 할 수 있다.

windbg -logo "test.txt" -c ".reload -f" -c "k" -c "q"

이렇게 하면 다른것들은 안남기고 k로 CallStack 정보만 남기고 windbg는 종료가 되니
텍스트 파일만 잘 다루면 CallStack으로 원하는 작업을 할 수 있다.

'프로그래밍' 카테고리의 다른 글

코딩도장 - Primary Arithmetic  (0) 2010.01.19
코딩도장 - 3n + 1  (0) 2010.01.19
IME를 강제로 활성, 비활성 시키기  (0) 2009.12.24
Collective Intelligence - Making Recommendations  (0) 2009.12.24
C# - Property  (0) 2009.12.24

IME를 강제로 활성, 비활성 시키기

IME 관련 작업을 하다보면 IME의 활성/비활성 상태를 강제로 조정해야할 필요가 있었다.

관련 자료를 찾기 위해 인터넷을 검색하다보니 비밀번호나 아이디로 영문만 입력받고자 할때 주로 사용하는데..

 

중국어 관련해서 사설 IME를 사용하는데 문제가 생겨서 이 방법을 사용했다.

사설 IME에서 입력을 받으면 안되는 상황인데 입력을 받아서 관련 동작을 처리하고 있어서 문제가 되었다.

그래서 IME를 비활성 시키는 구문을 넣었더니 해결이 되었다.

HIMC ImmAssociateContext( HWND hWnd, HIMC hImc );

MSDN의 ImmAssociateContext()를 살펴보면 이 API는 윈도우 별로 입력 컨텍스트를 만들었을때 컨텍스트를

지정하는데 사용할 수 있지만 hImc의 값에 NULL을 줄 경우, 해당 윈도우 창의 IME 포커스를 죽이게 된다.

따라서 관련된 IME는 동작하지 않게 되고, 사설 IME역시 동작을 하지 않는다.

 

하지만 중요하게 알고 있어야 하는것은 ImmAssociateContext()를 할 경우 리턴값으로 기존의 HIMC값이 반환되기 때문에

나중에 IME를 다시 사용하기 위해서는 반드시 저장해 둬야만 한다.

void SetActive( BOOL isActive )
{
   if( isActive )
   {
      // 기존의 값으로 IME를 다시 설정합니다.
      ImmAsscociateContext( hWnd, _oldhImc );
   }
   else
   {
      _oldhImc = ImmAssociateContext( hWnd, NULL );
      // IME를 비활성 시킵니다.
      // _oldhImc는 값을 저장하고 있어야 합니다.
   }
}

'프로그래밍' 카테고리의 다른 글

코딩도장 - 3n + 1  (0) 2010.01.19
WinDbg 출력 결과를 파일로 보내자  (0) 2010.01.07
Collective Intelligence - Making Recommendations  (0) 2009.12.24
C# - Property  (0) 2009.12.24
Python - Beautiful Soup  (2) 2009.12.24