Page 26 -
P. 26

프로그램 4.1.1 세 숫자의 합 문제 (threesum.py)
                          import stdarray
                          import stdio

                          def writeTriples(a):
                              # [연습문제 4.1.1] 참조
                                                                                                         4
                          def countTriples(a):
                              n = len(a)
                              count = 0                                                                  알고리즘과 데이터 구조
                                                                        a[]  정수의 배열
                              for i in range(n):                        n   a[]의 길이
                                  for j in range(i+1, n):
                                                                       count 합이 0이 되는 쌍의 개수
                                      for k in range(j+1, n):
                                          if (a[i] + a[j] + a[k]) == 0:
                                              count += 1
                              return count

                          def main():
                              a = stdarray.readInt1D()
                              count = countTriples(a)
                              stdio.writeln(count)
                              if count < 10:
                                  writeTriples(a)

                          if __name__ == '__main__': main()


                       이 프로그램은 표준 입력 장치에서 정수 배열을 읽고, 표준 출력 장치에 합이 0이 되는 세 숫자
                       조합의 개수를 출력한다. 개수가 적으면 세 숫자 조합도 출력한다. 1kints.txt 파일에는 32비트
                                       31
                                 31
                       정수 난수(-2 에서 2 -1 사이의 정수) 1,000개가 들어 있다. 이 파일에는 합이 0이 되는 세 숫
                       자 조합이 있을 가능성이 거의 없다([연습문제 4.1.27] 참조).

                        % more 8ints.txt            % python3 threesum.py < 8ints.txt
                        8                           4
                          30                          30  -30    0
                         -30                          30  -20  -10
                         -20                         -30  -10   40
                         -10                         -10    0   10
                          40                        % python3 threesum.py < 1kints.txt
                           0                        0
                          10
                           5










                                                                                              479
   21   22   23   24   25   26   27   28   29   30   31