규민이는 유성온천 부자


문제 

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

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

온천에 있는 유황온천수는 다음 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 밍쫑
,
프로그램 명: color
제한시간: 1 초

아래 그림 1 과 같이 여러개의 정사각형칸들로 이루어진 정사각형 모양의 종이가 주어져 있고, 각 정사각형칸들은 하얀색으로 칠해져 있거나 핑크색으로 칠해져 있다. 주어진 종이를 일정한 규칙에 따라 잘라서 다양한 크기를 가진 정사각형 모양의 하얀색 또는 핑크색 색종이를 만들려고 한다.

전체 종이의 크기가 N * N (N = 2k,k 는 1 이상 7 이하의 자연수)이라면 종이를 자르는 규칙은 다음과 같다.

전체종이가 모두 같은 색으로 칠해져 있지 않으면 가로와 세로로 중간부분을 잘라서 그림 2 의 I,II,III,IV 와 같이 똑같은 크기의 네개의 (N/2) * (N/2) 색종이로 나눈다. 나누어진 종이 I,II,III,IV 각각에 대해서도 앞에서와 마찬가지로 모두 같은 색으로 칠해져 있지 않으면 같은 방법으로 똑같은 크기의 네 개의 색종이로 나눈다. 이와 같은 과정으로 잘라진 종이가 모두 하얀색 또는 모두 핑크색으로 칠해져 있거나, 하나의 정사각형 칸이 되어 더 이상 자를 수 없을 때까지 반복한다.

위와 같은 규칙에 따라 잘랐을 때 <그림 3> 은 <그림 1> 의 종이를 처음 나눈 상태를, <그림 5>는 최종적으로 만들어진 다양한 크기의 9 장의 하얀색 색종이와 7 장의 핑크색 색종이를 보여주고 있다.

입력으로 주어진 종이의 한 변의 길이 N 과 각 정삭각형의 칸(하얀색 또는 핑크색)이 주어질 때 잘라신 하얀색 색종이와 핑크색 색종이의 개수를 구하는 프로그램을 작성하시오.

입력 형식

  • 첫째 줄에는 전체 종이의 한 변의 길이 N 이 주어져 있다. N 은 2,4,8,16,32,64,128 중의 하나이다.
  • 색종이의 각 가로줄과 정사각형칸들의 색이 윗줄 부터 차례로 입력의 둘째 줄 부터 마지막 줄까지 주어진다. 하얀색으로 칠해진 칸은 0 , 핑크색으로 칠해진 칸은 1 로 주어지며 각 숫자사이에는 빈칸이 하나씩 있다.

출력 형식

  • 첫째 줄에는 잘라진 하얀색 색종이의 개수를 출력하고
  • 둘째 줄에는 핑크색 색종이의 개수를 출력한다.

입출력 예

입력

8
1 1 0 0 0 0 1 1
1 1 0 0 0 0 1 1
0 0 0 0 1 1 0 0
0 0 0 0 1 1 0 0
1 0 0 0 1 1 1 1
0 1 0 0 1 1 1 1
0 0 1 1 1 1 1 1
0 0 1 1 1 1 1 1

출력

9
7
출처:koi 중등기출


Posted by 밍쫑
,

병훈이의 오목


문제


  

병훈이는 자신이 만든 오목 대전시스템에 자부심을 갖고 있다. 다음 단기에도 AI대회를 위해 후계자를 양성해야 한다.

바둑판에는 19개의 가로줄과 19개의 세로줄이 그려져 있는데 가로줄은 위에서부터 아래로 1번, 2번, …, 19번의 번호가 붙고 세로줄은 왼쪽에서부터 오른쪽으로 1번, 2번, …, 19번의 번호가 붙는다.

위의 그림에서와 같이 같은 색의 바둑알이 연속적으로 다섯 알이 놓이면 그 색이 이기게 된다. 여기서 연속적이란 가로, 세로 또는 대각선 방향 모두를 뜻한다. 즉, 위의 그림은 검은색이 이긴 경우이다. 하지만 여섯알 이상이 연속적으로 놓인 경우에는 이긴 것이 아니다. 입력으로 바둑판의 어떤 상태가 주어졌을 때, 검은색이 이겼는지, 흰색이 이겼는지 또는 아직 승부가 결정되지 않았는지를 판단하는 프로그램을 작성하시오.


단, 검은색과 흰색이 동시에 이기거나 검은색 또는 흰색이 두 군데 이상에서 동시에 이기는 경우는 입력으로 들어오지 않는다.

프로그램의 실행시간은 1초를 넘을 수 없다. 

 

입력

입력 파일은 19줄에 각 줄마다 19개의 숫자로 표현되는데, 검은 바둑알은 1, 흰 바둑알은 2, 알이 놓이지 않은 자리는 0으로 표시되며, 숫자는 한 칸씩 띄어서 표시된다.


출력

첫줄에 검은색이 이겼을 경우에는 1을, 흰색이 이겼을 경우에는 2를, 아직 승부가 결정되지 않았을 경우에는 0을 출력한다.

검은색 또는 흰색이 이겼을 경우에는 둘째 줄에 연속된 다섯 개의 바둑알 중에서 가장 왼쪽에 있는 바둑알(연속된 다섯 개의 바둑알이 세로로 놓인 경우, 그중 가장 위에 있는 것)의 가로줄 번호와 세로줄 번호를 순서대로 출력한다.

 

예제 입력​

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 1 2 0 0 2 2 2 1 0 0 0 0 0 0 0 0 0 0 
0 0 1 2 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 
0 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 1 2 2 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

예제 출력

1
3 2


출제자 : 임현수



[문제 풀이]

일반적으로 모두가 알고 있는 오목과 같은 룰이다.

오목은 어느 방향으로든 같은 색의 돌이 연속으로 5개가 놓이면 승리하는 게임이다.

가로로 놓일 경우 제일 왼쪽의 돌을, 대각선으로 놓일 경우 제일 위쪽의 돌을 기준으로 연속인지 확인한다.

다만, 주의할 점은 연속으로 6개가 놓이면 이긴것이 아니다. (아래에서는 이런 경우를 6돌이라 부르겠다.)


[소스코드 풀이]

x와 y의 좌표가 (0, 0) 이 아닌 (1, 1)부터 시작하게 하기 위해서 처음 map을 선언할 때 MAX+1을 해주고 0으로 초기화하였다.


- bool 타입의 chk 함수

x, y : 좌표

d : 방향

count : 개수

color : 선택한 색깔


일단, 처음에 맵의 크기를 넘어서는지를 확인하면서 6돌인지를 확인한다.

그리고 다음 돌이 현재 선택된 돌과 같은색인지를 체크하는 if문을 만들었다.


여기서 d의 경우 한 시부터 시계 방향으로 각 각 1~4의 방향이고 이 외의 것을 0으로 생각한다.



1~4 이외의 방향인 0의 경우 각 방향별로 반대 방향에 돌이 있는지를 확인하는 case 0: 을 작성합니다.


그리고 재귀로 chk함수를 계속 돌면서 count가 늘어나게 되는데

6목의 경우 이긴경우가 아니라고 했는데 count가 6일 경우에 true를 줬을까요?

그건 바로 count가 6까지 증가를 하고 chk()에 들어왔을 때에 5개의 돌이 연속인 것이 확인 되어 있기 때문이다.



주의! 

우리가 일반적으로 수학에서 배운 좌표계와 배열에서 사용하는 좌표계는 다릅니다!

밑에 표에서 보시는 바와 같이 오른쪽과 아래쪽으로 갈수록 크기가 커집니다.


          y   /   x

0

 0

 1

 2





Posted by 밍쫑
,

유정이의 산삼


문제


N * N 크기의 숲이 있다. 이 숲에는 1000년 묵은 산삼이 군데군데 자라고 있어서 유정이는 익균이의 자동차를 타고 산삼을 먹으려 한다.

익균이의 자동차는 (1, 1)의 위치에서 출발하여 (N, N)까지 이동하는데, 익균이의 자동차는 고물이라 오른쪽 또는 아래쪽으로밖에 움직이지 못한다. 유정이는 무한한 양의 산삼을 먹을 수 있다고 가정(?)하자.

익균이의 자동차를 이용해 유정이가 최대한 많이 산삼을 먹도록 하는 프로그램을 작성하시오. 

입력

첫 줄에는 숲의 크기 N (3 <= N <= 100)이 주어진다.

둘째줄부터는 주어진 지도가 N줄 만큼 입력된다. (단, 0은 산삼 없음, 1은 산삼 있음을 의미한다.)


출력

유정이가 먹을 수 있는 최대 산삼의 양을 출력한다.

예제 입력

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

예제 출력

6



[문제 설명]

(이런 문제의 경우, 손으로 직접 예제를 풀어보면서 문제를 이해하시는 게 제일 도움이 됩니다.)

문제에서 오른쪽 또는 아래쪽으로만 움직일 수 있고, 움직이면서 최대한 많이 산삼을 먹는게 목표인데요.

즉, 오른쪽 또는 아래쪽으로 이동해보면서 1을 가장 많이 지나는 경우를 찾으시면 됩니다.


[소스코드 설명]

저같은 경우 배열을 (1, 1)부터 사용을 하기 위해서 배열 사이즈를 하나 더 늘려주고, 처음에{0, 0}으로 초기화를 하였습니다. 이렇게 하시면은 비교를 할 때 맵의 크기를 넘어가는 경우에 대해서도 예외처리를 안해도 되기 때문에 매우 편합니다.


제가 짠 코드를 디버깅 돌려보면 다음과 같은 결과가 나옵니다.



0

0

0

0

0

0

 1

0

0

1

1

1

2

 2

0

 0

2 

 2

 3

 0

 1

 4

 0

 2

 5

 0

 3

6 





Posted by 밍쫑
,

두현이의 음모

문제

기회식 때 술게임으로 만취가 되어버린 두현이가 자신에게 술을 먹인 회원들에게 새로운 술게임을 통해

복수하려 한다. 게임의 룰은 이렇다.

10진수를 상대방에게 말하면 2진수로 좌우 대칭(이진 회귀수)이 맞는지 1초 안에 대답하는 게임이다.

예를들어 10진수 21은 2진수로 10101 이므로 이진회귀수이다.


두현이는 알딸딸한 상태에서도 게임의 승률을 높이기 위해 A와 B 사이에 해당하는 이진회귀수를 출력해 외우려 한다.

 

입력

A B  (2 <= A, B <= 100000) 

출력

A와 B 사이에 존재하는 2진 회귀수

예제 입력1

1 10

예제 출력1

1
3
5
7
9



[문제 설명]

2진수의 중간을 기점으로 양쪽을 비교하여 좌우 대칭을 이루는 수를 이진회귀수라고 부릅니다.

예를들어 11011, 101010101도 이진회귀수겠죠?

이번 문제에서는 입력으로 두 개의 숫자가 들어오게 되고, 그 숫자사이의 이진회귀수를 찾는 문제입니다.

입출력으로는 2진수가 아닌 10진수로 나타내야하는 것을 알아두셔야 합니다.


[소스코드 설명]

저같은 경우, 일단 while문을 돌면서 각 숫자를 2진수로 바꿔주었습니다.

그 후 2진수 문자의 길이의 절반만큼 for문을 돌면서 앞과 뒤를 비교하였습니다.

이 때 check라는 flag를 두어서 앞과 뒤가 같지 않을경우  check=0을 줘서 이진회귀수가 아님을 체크하였습니다.



Posted by 밍쫑
,

문제

제천 신동 장난꾸러기 희동이는 어릴 적 별명이 로꾸꺼였다. 왜냐하면 어른들이 무엇을 물어보면 대답을 꺼꾸로하는 장난을 자주 했기 때문이다. 그런데 이 녀석 대학생이 되어서도 자기가 화가 날 때면 대답을 거꾸로한다. 같이 팀 프로젝트를 하는 준수와 현수는 이런 희동이 때문에 가끔 깊은 빡침을 느낀다. 그래서 프로그램을 개발하여 화가 난 희동이의 대답을 번역하기로 결심했다!

공백을 기준으로 단어가 역순이 되어야 한다.

 

입력

문자의 개수 (2 <= C <= 2000) 

 

예제 입력1​

I evol gnusmas erawtfos .pihsrebmem

예제 출력1

I love samsung software membership



[문제 풀이]

입력하는 문자를 순서는 제외하고, 문자 자체를 거꾸로 출력(역순)하면 되는 간단한 문제입니다.




Posted by 밍쫑
,

문제

최근에 아주 비싼 키보드를 구입한 성주는 키보드의 진정한 가치를 느끼기 위해 여러가지 기능을 알아보기로 했다. 이것 저것 눌러보던중 "레알힘"을 느낄수 있는 아주 강력한 기능을 발견했다. 복사, 붙여넣기. 이름하여 복붙기능이 탑재되어 있었다. 복사 또는 붙여넣기를 하는데 각각 1초의 시간이 소요된다. 복붙놀이에 심취하던 중 하나뿐인 여동기 민지에게 하트를 복사, 붙여넣기해서 보여주기로 했다. 입력된 개수의 하트를 복붙놀이로 만드는데 걸리는 시간을 구하라. 

  • 첫 화면에는 하트 한 개가 있다.
  • 복사를 하면 화면에 보이는 모든 하트가 클립보드에 저장된다.
  • 붙여넣기를 하면 클립보드에 있는 모든 하트가 붙여넣기가 된다.

 

입력

하트의 개수 (2 <= N <= 2000) 

출력

하트를 복붙놀이를 해서 만드는데 걸리는 시간 

예제 입력1

2

예제 출력1

2


1. ♥ (복사, 클립보드에 1개가 들어간다)
2. ♥♥ (붙여넣기, 화면에 하트가 2개가 된다)

예제 입력2

6

예제 출력2

5


1. ♥ (복사, 클립보드에 1개가 들어간다)
2. ♥♥ (붙여넣기, 화면에 하트가 2개가 된다)
3. ♥♥ (복사, 클립보드에 2개가 들어간다)
4. ♥♥♥♥ (붙여넣기, 화면에 하트가 4개가 된다)
5. ♥♥♥♥♥♥ (붙여넣기, 화면에 하트가 6개가 된다) 

예제 입력3

11

예제 출력3

11


예제 입력4

16

예제 출력4

8

 

예제 입력5

1000

예제 출력5

21




[소스코드 설명]



Posted by 밍쫑
,

문제

신입 단기과제 연계 끝에 대전멤버십에서 새로운 숫자 체계 "MemNumber"를 완성시켰다. 이것은 4개의 소문자 m, c, x, i와 8개의 숫자 2, 3, 4, 5, 6, 7, 8, 9로 수를 표현한다. 즉, 0과 1은 사용하지 않는다.

 

몇가지 예를 들면

  • "5m2c3x4i" 는 5234 (= 5*1000 + 2*100 + 3*10 + 4*1)
  • "m2c4i" 는 1204 (= 1000 + 2*100 + 4*1)
  • "5m2c3x" 는 5230 (= 5*1000 + 2*100 + 3*10)

위 예에서

  • "5m" 는 5000 (= 5*1000)
  • "2c" 는 200 (= 2*100)
  • "3x" 는 30 (= 3*10)
  • "4i" 는 4 (= 4*1)

즉, m, c, x, i 앞에 2부터 9까지 수가 올 수 있는데 이 수와 짝을 이루어 수의 곱을 의미한다.

m, c, x, i 는 많아야 한 번 나올수 있다. 접두 숫자와는 같이 움직인다. m , c ,x , i 는 이 순서로 나와야 한다. 

다음은 가능하지 않는 "MemNumber"이다.

  • "1m2c4i"
  • "mcc4i"
  • "m2c0x4i"
  • "2cm4i"

 

"MemNumber" 문자열 두개를 입력으로 받아 "MemNumber" 수의 합을 구한 후 대응되는 "MemNumber" 문자열을 출력한다.

 

입력

"MemNumber" 문자열 2개가 입력된다.

두 수의 합은 9999를 넘지 않는다.

 

출력

입력된 "MemNumber" 문자열의 합을 "MemNumber"수로 출력한다.

예제 입력1

xi x9i

예제 출력1

3x


예제 입력2

i 9i

예제 출력2

x


예제 입력3

m2ci 4m7c9x8i

예제 출력3

5m9c9x9i


예제 입력4

9m8c7xi c2x8i

예제 출력4

9m9c9x9i



[문제 설명]

m = 1000

c = 100

x = 10

i = 1

1. 이 4개의 문자들은 2~9까지의 8개의 숫자와 짝을 이룹니다.

따라서 4m = 4 * 1000 = 4000이라고 볼 수 있고, mc = 1000 + 100 = 1100이라고 볼 수 있습니다.

2. mcxi는 각 한 번씩만 나올 수 있습니다.

3. m - c - x - i 꼭 이 순서대로 문자가 나와야 합니다.

이 세 가지 조건을 만족하면서 두 수의 합을 계산 한 후 다시 m, c, x, i 로 표현을 하는 것이 이번 문제였습니다.


[소스 코드 설명]

입력받은 문자의 길이를 구한 후, 그 길이 만큼 for문을 돌면서 각 문자별로 앞에 붙은 숫자와 짝을 이루어 입력받은 문자가 숫자로 환산하면 몇 인지를 파악합니다.

그리고 환산한 두 숫자를 더한 후에 다시 mcxi 문자로 바꿔주는 소스 코드 입니다.



Posted by 밍쫑
,