diff --git "a/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/main.py" "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/main.py" new file mode 100644 index 0000000..ba38075 --- /dev/null +++ "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/main.py" @@ -0,0 +1,33 @@ +import sys + + +def solve(): + input = sys.stdin.readline + N = int(input().strip()) + dts = list(map(int, input().strip().split())) + dts.sort() + + MAX = 1000000000 + 1 + answers = [MAX, MAX, MAX] + + # mid를 반드시 포함하는 3개의 용액을 찾는다. + for mid in range(1, N - 1): + left, right = mid - 1, mid + 1 + + while left < mid < right and 0 <= left and right < N: + if abs(dts[left] + dts[mid] + dts[right]) < abs(sum(answers)): + answers[0], answers[1], answers[2] = dts[left], dts[mid], dts[right] + + if dts[left] + dts[mid] + dts[right] < 0: + right += 1 + elif dts[left] + dts[mid] + dts[right] > 0: + left -= 1 + else: + print(' '.join(map(str, answers))) + return + + print(' '.join(map(str, answers))) + + +if __name__ == '__main__': + solve() diff --git "a/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test1.txt" "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test1.txt" new file mode 100644 index 0000000..b04b7a2 --- /dev/null +++ "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test1.txt" @@ -0,0 +1,2 @@ +5 +-2 6 -97 -6 98 diff --git "a/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test1_answer.txt" "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test1_answer.txt" new file mode 100644 index 0000000..67340b5 --- /dev/null +++ "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test1_answer.txt" @@ -0,0 +1 @@ +-97 -2 98 diff --git "a/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test2.txt" "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test2.txt" new file mode 100644 index 0000000..76c20ea --- /dev/null +++ "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test2.txt" @@ -0,0 +1,2 @@ +7 +-2 -3 -24 -6 98 100 61 diff --git "a/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test2_answer.txt" "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test2_answer.txt" new file mode 100644 index 0000000..b7872c0 --- /dev/null +++ "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test2_answer.txt" @@ -0,0 +1 @@ +-6 -3 -2 diff --git "a/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test_main.py" "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test_main.py" new file mode 100644 index 0000000..cf8f35e --- /dev/null +++ "b/\353\260\261\354\244\200 2473\353\262\210 \354\204\270 \354\232\251\354\225\241 v2/test_main.py" @@ -0,0 +1,26 @@ +import sys +from pathlib import Path +from unittest import TestCase +from main import solve + + +class Test(TestCase): + def my_solve(self, testcase_input): + sys.stdin = open(testcase_input, 'r') + stdout = sys.stdout + sys.stdout = open('stdout.txt', 'w') + solve() + sys.stdout.close() + sys.stdout = stdout + + def test_solve(self, testcase_number: str): + self.my_solve('test' + testcase_number + '.txt') + self.assertEqual( + Path('test' + testcase_number + '_answer.txt').read_text().strip(), + Path('stdout.txt').read_text().strip()) + + def test1_solve(self): + self.test_solve('1') + + def test2_solve(self): + self.test_solve('2') \ No newline at end of file