wondy1128   7년 전

10 5 1 49999999 50000000 50000000 50000000 -> yes 50000000 50000000 를 출력합니다. 1 3 2 50000000 10 -> danger 출력합니다.

0. 모든 입력을 받고, 단위 환산을 시킨다. 

1. 정렬을 시킨다. 

2. 정렬된 값을 왼쪽 끝(최소값 인덱스) 오른쪽 끝(최대값 인덱스) 을 지정하여 탐색을 한다. 

  2-0. 합 <- (최소값 + 최대값)

  2-1 . 합과 NEED (X값) 이 같으면 처음 구해지는 것이 최소와 최대이므로 해당 값을 출력한다.

  2-2. 합 < NEED (X값) 이라면 최소값 인덱스를 증가시킨다. 오름차순 정렬된 상태이므로 합 값은 증가한다. 

  2-3. 합 > NEED (X값) 이라면 최대값 인덱스를 감소시킨다. 오름차순 정렬된 상태이므로 합 값은 감소한다.

  2-4. 최소값 인덱스와 최대값 인덱스가 같아지면 루프를 나오며, 이 경우 답이 없는 경우이므로 danger를 출력한다.

값이 오름차순 으로 정렬된 상태이므로 lego[0] .... lego[n-1] 은 오름차순 정렬

값은 항상 [0] .... [len1] .... [len2] ..... [len3] .... [len4] .... [n-1] 이라면 

(len1 + len4) == need

(len2 + len3) == need 인 경우는 가능

len1+len3 == need 

len2+len4 == need 인경우는 불가능 

len1 < len2 

len3 < len4 이므로 

len1==len2 , len3==len4 인 경우가 아니라면 불가능함.

len1+len3 < len2+len4

이런 방식으로 작성한 코드입니다...

여러가지 tc를 작성해서 넣었는데 어떤 것이 잘못되었는지 모르겠습니다.... 도움 부탁드립니다...

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