yky2798   14일 전

문제 조건이 조금 더 구체적이었으면 좋겠습니다. 문제를 이해하시고 바로 풀어내신 분들은 박수쳐드립니다.

주어진 문제 예시가 아래와 같습니다.

|A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]|

입력

편의상 입력 항목이 6개라 가정하겠습니다.

[1] |항목-항목| <- 요걸 1개 항이라 한다면, 항의 개수는 1개일수도 있고 최대 5개인 것인가요?

ex1> |A[0] - A[1]| + |A[1] - A[2]| + | A[2] - A[3]| + |A[3] - A[4]| + A[4] - A[5]| 5개를 다 활용해서 최대값을 만들던가

ex2> |A[0]- A[1]| 한개만 활용해서 최대값을 만들던가


[2] 절대값으로 감싸인 항목이 -> |A[0] - A[2]| (o) , |A[2]-A[0]| (x) 이런것인가요?


[3] 아래 꼴로 한 항목이 2번 이상 사용이 가능한 것인가요?

|A[0] - A[1]| + |A[0] - A[2]| + | A[0] - A[3]| + |A[0] - A[4]|

답변 달아주시면 감사하겠습니다 OTL 이 문제가 너무 풀고싶어요 ㅠㅠ

shg9411   14일 전

1. 모든 정수를 다 사용해야 합니다.

위 입력을 예로 들면 5개 항이 나오겠죠.

2. 정수들의 순서를 바꾸셔서 값을 최대로 만드는 것입니다. 순서를 바꾸시는 것은 아무 상관이 없습니다.

3. 1 2 3이 입력으로 주어졌다면

답은 3이고 3이 나올 수 있는 하나의 예로

1 3 2로 배치할 수 있고, (2,1,3),(2,3,1),(3,1,2)등도 가능합니다.

|1-3| + |3-2| = 3 입니다.

exponential_e   14일 전

문제 예제와 같이 데이터가 6개 들어온다면

A[] = {20, 1, 15, 8, 4, 10}이라는 뜻 입니다.

또한 배열의 순서를 바꾸어 '|A[0] - A[1]| + |A[1] - A[2]| + ... + |A[N-2] - A[N-1]|'의 값을 최대로 정하라는 것은

A내의 입력값의 순서를 바꾸라는 뜻 입니다.

예를 들어

1 4 8 10 15 20 ... (1)

1 4 8 10 20 15

...

4 8 1 10 20 15 ... (2)

...

20 15 10 8 4 1

총 가능한 경우의 수는 6!개가 되겠네요.

1번은 어떤 이야기를 하시는지 모르겠으나 아무 항을 골라서 뺀 결과가 아닌, N개의 입력이 주어지면 총 (N-1)개의 항이 존재하게 됩니다.

2번은 내부가 절댓값이기 때문에 그저 각 항의 차이값을 구하고 더하라는 의미입니다.

3번은 아래와 같이 당연히 불가능한 이야기입니다.

너무 어렵게 생각하신게 아닌가 싶습니다. 문제의 내용을 그대로 보고 이해하시면 될 듯합니다.

즉, 입력 데이터가 6개라면

|A[0] - A[1]| + |A[1] - A[2]| + |A[2] - A[3]| + |A[3] - A[4]| + |A[4] - A[5]|

이를 위에 예로든 순서를 바꾸는 방법 (1), (2)를 적용하면 아래와 같습니다.

|1 - 4| + |4 - 8| + |8 - 10| + |10 - 15| + |15 - 20| ... (1')

|4 - 8| + |8 - 1| + |1 - 10| + |10 - 20| + |20 - 15| ... (2')

exponential_e   14일 전

쓰고 나니 다른 분이 댓글을 달아주셨네요. 저랑 같은 이야기하신 것 같으니 보시고 이해되는 글 기반으로 풀어보시면 될 것 같습니다.

yky2798   14일 전

답변 달아주신 분들 감사합니다. 

제가 문제를 너무 어렵게 이해했던 것 같습니다. 

싹 다 나열해서 처리했습니다. 

shg9411exponential_e 님 감사합니다!

복받으세요 ㅎㅎㅎㅎ

댓글을 작성하려면 로그인해야 합니다.