algorithm/problem solving

acmicpc.net 1233번 주사위, 1247번 부호

qkqhxla1 2016. 7. 10. 15:47

https://www.acmicpc.net/problem/1233


1233번 주사위.


문제

지민이는 주사위 던지기 게임을 좋아하여 어느 날 옆에 있는 동호를 설득하여 주사위 던지기 게임을 하자고 하였다. 총 3개의 주사위가 있다. 그리고 이 주사위는 각각 S1(2 ≤ S1 ≤ 20), S2(2 ≤ S2 ≤ 20), S3(2 ≤ S3 ≤ 40)개의 면이 있다. (실제로는 주사위가 6개의 면이 있는 것이 정상이지만 특별한 주사위라 생각하자.)


문제는 세 개의 주사위를 동시에 던졌을 때 가장 높은 빈도로 나오는 세 주사위의 합을 구하는 것이다.


입력

입력 파일의 첫째 줄에 정수 S1, S2, S3가 주어진다.


출력

출력 파일의 첫째 줄에 가장 높은 빈도로 나오는 세 주사위 합을 구하는 것이다. 단 답이 여러개라면 가장 합이 작은 것을 출력한다.


예제 입력  

3 2 3

예제 출력  

5


파이썬 소스.

dice = map(int,raw_input().split())
s_list = []
for i in xrange(1,dice[0]+1):
    for j in xrange(1,dice[1]+1):
        for k in xrange(1,dice[2]+1):
            s_list.append(i+j+k)
s_dict = {}
for num in s_list:
    if num in s_dict:
        s_dict[num] += 1
    else:
        s_dict[num] = 1
print sorted(s_dict.iteritems(),key = lambda x:x[1],reverse = True)[0][0]

https://www.acmicpc.net/problem/1247


1247번 부호


문제

N개의 정수가 주어지면, 이 정수들의 합 S의 부호를 구하는 프로그램을 작성하시오.


입력

총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1≤N≤100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절대값은 9223372036854775807보다 작거나 같다.


출력

총 3개의 줄에 걸쳐 각 테스트 셋에 대해 N개의 정수들의 합 S의 부호를 출력한다. S=0이면 "0"을, S>0이면 "+"를, S<0이면 "-"를 출력하면 된다.


예제 입력  

3

0

0

0

10

1

2

4

8

16

32

64

128

256

-512

6

9223372036854775807

9223372036854775806

9223372036854775805

-9223372036854775807

-9223372036854775806

-9223372036854775804


예제 출력  

0

-

+


answer = []
for i in range(3):
    s = sum([int(raw_input()) for j in range(int(raw_input()))])
    answer.append('0' if s==0 else '-' if s<0 else '+' )
print '\n'.join(answer)