증가-팬린드롬


문제 

양의 정수의 수열이 주어질 때 앞으로 읽던 뒤로 읽던 같은 수열이면 “팰린드롬“이라고 한다.


예를 들어, 두 수열은 “팰린드롬” 이다.


23 11 15 1 37 37 1 15 11 23

1 1 2 3 4 7 7 10 7 7 4 3 2 1 1


“팰린드롬” 수열 중 중간 위치에 있는 수까지 감소하지 않는 수열은 “증가-팰린드롬”이라고 한다.


23 11 15 1 37 37 1 15 11 23   => “증가-팰린드롬”이 아니다.

1 1 2 3 4 7 7 10 7 7 4 3 2 1 1  => “증가-팰린드롬”이다.


양의 정수 N이 주어질 때 수열의 합이 N이 되는 “증가-팰린드롬”의 개수를 구하라. 


주어지는 입력의 경우의 수는 64 비트 정수로 표현이 가능하다.


몇가지 보기를 보면,


1: (1)

2: (2), (1 1)

3: (1 1 1)

4: (4), (1 2 1), (2 2), (1 1 1 1)

5: (5), (1 3 1), (1 1 1 1 1)

6: (6), (1 4 1), (2 2 2), (1 1 2 1 1), (3 3), (1 2 2 1), (1 1 1 1 1 1)

  

예제 입력​1

2

예제 출력1

2

예제 입력​2

8

예제 출력2

11

출제자 : 안일규


Posted by 밍쫑
,

멤버십 복사기


문제 

560 * 400 밀리미터 이미지를 표준 용지( 218 * 280 mm) 로 복사하려고 한다. 

이 복사기는 축소 기능이 있어 용지에 맞게 가능한 크게 복사하려고 하는 경우 50 % 축소 복사하면 된다.

물론 90 도 회전 할수도 있다.( 랜드스케이프 모드) 

                             

문제는 복사할 이미지와 복사용지가 주어질 때 이 이미지를 복사용지에 잘림이 없이 최대로 넣기 위한 위한 축소 % 를 구하는 문제이다. 


 

입력

4 개의 정수가 입력으로 주어진다. 처음 두 수는 복사할 이미지의 크기이고 다음 두 수는 복사용지의 크기이다. 

출력

답은 1 에서 100% 사이의 정수이다. 


예제 입력1

560 400 218 280

예제 출력1

50%

예제 입력​2

10 25 88 10

예제 출력2

100%

출제자 : 박종범


Posted by 밍쫑
,

쉼표


문제 

세 자리 마다 쉼표를 찍는 프로그램을 작성하세요.

 

입력

공백없이 100 자리이하의 수가 입력으로 주어진다. 무효의 0은 입력되지 않는다.


출력

출력 예의 형식으로 출력한다.

 

예제 입력​

1234

예제 출력

1,234


출제자 : 임현수


Posted by 밍쫑
,

돈줍기


문제 

N 개의 돈이 놓여있다. 돈을 마음껏 주워갈 수 있다. 단, 연속해서 3개 이상의 돈을 줍지는 못한다.

가장 많은 돈을 줍는 프로그램을 만들어 보자.

 

입력

1<=N<=1000, 돈의 크기는 100 이하이다.


출력

가장 많이 주울 수 있는 돈의 액수를 출력하라.

 

예제 입력​

8
5 7 10 1 2 10 11 6

예제 출력

38


입출력 예

7 + 10 + 10 + 11 = 38

출제자 : 안일규


Posted by 밍쫑
,
멤고리즘 5회 2번 문제 멤고리즘 / 알고리즘

2014/04/26 09:28

복사 http://blog.naver.com/justant/20209498706

전용뷰어 보기

2등신 영훈이


문제 

2진수 나라의 2번째 왕자 2등신 영훈이는 8등신 밖에 없는 삼성전자 임원면접에 합격하기 위해 8등신이 되려한다.

8등신인 우리는 2등신 영훈이를 8등신으로 바꿔주는 알고리즘(2진수 -> 8진수)을 구현하려 한다.

 

입력

100 자리를 넘지 않고 첫 수는 1로 시작한다.


출력

대응되는 8진수를 출력한다.

 

예제 입력​1

1010

예제 출력1

12


예제 입력​2

11001100

예제 출력2

314

출제자 : 임현수


Posted by 밍쫑
,

멤고리즘 랭킹


문제 

요즘 멤고리즘 랭킹은 준수가 직접 수작업으로 계산하고 있다. 

그래서, 힘든 우리 준수를 위해 랭킹을 정해주는 프로그램을 만들어 주려고 한다. 


프로그램의 규칙의 다음과 같다.

85점, 105점, 92점을 받았다면, 각각 3등, 1등, 2등이다. 드물게 동점자가 나오는 경우도 있다. 예로 90, 100, 90, 80 점을 맞은 경우에는, 2등, 1등, 2등, 4등으로 처리하도록 한다. 

 

입력

첫째 줄에는 사람의 수 N(1000 이하 정수)이 주어진다. 

다음줄부터는 각 사람의 점수가 주어진다. 점수는 1000 이하의 정수이다. 

출력

입력된 순서대로 각 사람이 몇 등인지를 출력한다. 

 

예제 입력​

5
97
65
84
84
91

예제 출력

1
5
3
3
2


출제자 : 박종범


Posted by 밍쫑
,

운영자의 사탕


문제

위 운영자님에게 N개의 사탕이 생겼다. 운영자님은 N개의 사탕을 K명의 회원들에게 나눠주고 싶어한다. 그런데 멤버십 회원들 사이에는 서열이 존재하여, 서열이 높은 사람은 서열이 낮은 사람보다 같거나 많은 수의 사탕을 받아야한다. 모든 멤버십 회원이 사탕을 1개 이상은 받아야 한다고 가정한다. 

사탕 수와 회원 수가 주어졌을 때, 사탕을 나눠주는 경우의 수를 구해보자.

 

입력

사탕 수 N ( 1 <= N <= 200 ), 회원 수 K ( 1 <= K <= N ) 가 입력으로 주어진다.

출력

결과는 64 비트 정수 형내의 값이다.

 

예제 입력​

7 3

예제 출력

4

입출력 설명

1 1 5
1 2 4
1 3 3
2 2 3

출제자 : 안일규



(http://183.106.113.109/30stair/moving/moving.php?pname=moving)

Posted by 밍쫑
,

규민이는 유성온천 부자


문제 

규민이는 멤버십에서 제일 가는 부자이다. 규민이네 정원 안에는 큰 온천가 있고, 그것을 막는 댐이 있었다. 

그런데 어느날 그 댐이 무너져내려 온천에 있는 유황온천수가 규민이네 정원을 모두 뒤덮으려한다. 

온천에 있는 유황온천수는 다음 1시간에 한 블럭으로 이동하며, 규민이네의 유황온천수는 무한하다. 

유황온천수는 상 하 좌 우로 퍼져나가며 마을을 뒤덮는다.

 

규민이네 가정부인 당신은 댐이 터진 순간 규민이네 정원 지도를 받았다. 

당신이 수행해야 할 일은 완공시간이 K시간인 댐들을 최대한 빨리 지어서 유황온천수가 더 이상 진행하지 못하도록 하는 것이다.

 

입력

첫 줄에는 배열의 크기인 T(1 ≤ T ≤100)가 주어지고

다음 줄부터 배열의 값이 주어진다. 0은 텅 빈 정원, 1은 정원에 있는 건물이다. (유황온천수는 건물을 뒤덮지 못한다고 가정한다.)

그리고 그 다음 줄에는 유황온천수가 터진 좌표 x, y가 주어지고,

다음 줄에는 댐이 지어지는 시간인 K가 주어진다.


출력

지어야 하는 댐의 숫자를 출력한다. 

만약, 정원이 전부 잠길 때까지 댐을 지을 수 없거나 건물에 둘러쌓여 물이 더이상 진행을 못할 경우엔 "OH, MY GOD"을 출력한다. 

(좋은 의미로든, 나쁜 의미로든....)


예제 입력​

5
0 1 0 0 1
0 0 0 0 0
1 1 1 0 1
0 0 0 0 0
1 0 1 0 1
1 1
5

예제 출력

3


예제 입력​

5
0 0 1 0 0
0 0 0 0 0
1 1 1 0 0
0 0 1 1 0
0 0 0 0 0
5 2
3

예제 출력

2


입출력 설명

첫 번째 입력에서 (1,1) 위치에서 유황온천수가 터졌다면, 유황온천수는 시간마다 다음과 같이 진행된다.

(B는 건물의 위치)


0 B 4 5 B

1 2 3 4 5

B B B 5 B

9 8 7 6 7

B 9 B 7 B


그러므로 5 시간인 세군데를 막아 유황온천수이 진행하지 못하게 하는 것이 최선이다.

그러므로 출력이 3

출제자 : 임현수


(http://183.106.113.109/30stair/dam/dam.php?pname=dam)

Posted by 밍쫑
,

먹보 영훈이2


문제 

영훈이는 멤버십에서 음식을 가장 많이 먹는 회원이다.

음식에 대한 규칙이 철저한 영훈이에게는 내일의 음식 칼로리를 계산하는 법칙이 있다.


오늘 먹은 음식의 칼로리가 어제 먹은 음식의 칼로리보다 적다면 영훈이는 억울해서 화가난다.

영훈이는 이 화를 풀기위해 다음날 음식의 칼로리를 

(오늘 먹은 음식의 칼로리) x (어제 먹은 음식의 칼로리) 만큼 계산해 놓는다.


이와 반대로 오늘 먹은 음식의 칼로리가 어제 먹은 음식의 칼로리보다 많다면 영훈이는 살이 찐다는 걱정에 화가난다.

영훈이는 이 화를 풀기위해 다음날 음식의 칼로리를 

(오늘 먹은 음식의 칼로리) - (어제 먹은 음식의 칼로리)로 계산해 놓는다.


어제 먹은 음식의 칼로리와 오늘 먹은 음식의 칼로리가 입력으로 주어질 때, 

(어제 먹은 음식의 칼로리) - (오늘 먹은 음식의 칼로리) 의 값과 영훈이가 계산해 놓은 다음날 음식의 칼로리값을 출력하시오.


단, 영훈이는 대식가이므로 칼로리의 자리 수는 200자리까지 나올 수 있고, 오늘 먹은 음식의 칼로리와 어제 먹은 음식의 칼로리가 같다면, 영훈이는 행복하므로 “영훈아 사랑해”를 출력한다.

 

입력

입력은 두 줄로 하며 , 각 각의 줄에는 200 자리 이하의 0 혹은 양의 정수가 주어진다. 

첫 번 째 줄은 영훈이가 어제 먹은 음식의 칼로리이고, 둘 째 줄은 영훈이가 오늘 먹은 음식의 칼로리이다.


출력

첫 째 줄에 (어제 먹은 음식의 칼로리) - (오늘 먹은 음식의 칼로리) 의 값을 출력하고, 둘 째 줄에 영훈이가 계산해 놓은 다음날 음식의 칼로리값을 출력한다.(단, 오늘 먹은 음식의 칼로리와 어제 먹은 음식의 칼로리가 같다면, 영훈이는 행복하므로 “I Love YoungHoon”를 출력한다.)

 

예제 입력​

123456789012
2467832589334

예제 출력

-2344375800322
2344375800322


출제자 : 박종범


Posted by 밍쫑
,

문제

오늘은 멤버십 회식 날이다.

멤버십 회원들은 운영자님을 사랑하는 마음을 담아 N * N 개의 술잔에 술을 따라 두었다.

각 회원이 운영자님을 사랑하는 마음이 다르기에 술잔의 술의 양도 다양하다.

큰 운영자님과 작은 운영자님은 사이가 좋기 때문에 총 마시는 술의 양의 차이가 되도록 적게 하여 마시고 싶어 한다.

그런데 술을 마시다 보면 정신이 없기 때문에 규칙을 정해 놓았다.

N * N 개의 술잔들을 두 부분으로 나누어, 큰 운영자님은 위 쪽의 술을 마시고 작은 운영자님은 아래쪽의 술을 마시기로 하였다.

이 때 각 운영자님에게 배분된 구역이 단조 증가하는 계단 모양이 되게 하려고 한다. , 주어진 술잔 들을 N * N 행렬로 볼 때 작은

운영자님이 특정 열에서 할당받는 구역의 개수는 바로 왼쪽 열에서 받은 구역의 개수보다 크거나 같아야 한다.

 

 

 

예를 들어, 다음 세 개의 그림 중 그림 12는 올바른 배정 방법으로, 회색 지역은 작은 운영자님이 마셔야 할 술잔, 흰 부분은 큰 운영자님이 마셔야 할 술잔이다. 그러나 그림 3은 술잔을 나누는 규칙을 어기는 경우이다.

 

입력

첫째 줄에 N (2<=N<=20) 이 주어지고, 이어서 N * N 행렬로 각 술잔에 따라진 술의 양이 0 에서 100 사이의 정수로 주어진다.


출력

첫째 줄에 최적의 방법으로 영역을 나누었을 때, 총 마시는 술의 양의 차이의 최소값을 출력한다.

 

예제 입력1​

5
3 4 5 1 8
8 2 3 2 2
0 2 9 5 4
1 11 3 0 5
4 5 2 7 1

예제 출력1

1


출제자 : 안일규


Posted by 밍쫑
,