DevKim

[Python] 백준 #1744 수 묶기 본문

알고리즘 PS

[Python] 백준 #1744 수 묶기

on_doing 2020. 12. 19. 21:04
728x90

www.acmicpc.net/problem/1744

 

1744번: 수 묶기

길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에

www.acmicpc.net

result=0

n=int(input())
data=[]
for i in range(n):
    data.append(int(input()))

#음수 따로,양수따로 리스트 분리 후, 양수는 내림차순, 음수는 오름 차순으로..

m_data=[i for i in data if(i<=0)]
m_data=sorted(m_data) #오름차순

p_data=[i for i in data if(i>0)]
p_data=sorted(p_data,reverse=True)


#마이너스,0 리스트 부터
if(len(m_data)%2==0): # 데이터 개수가 짝수일때
    for i in range(len(m_data)-1):
        if(i%2==0):
            result=result+(m_data[i]*m_data[i+1])        
        
else:
    for i in range(len(m_data)-1):
        if(i%2==0):
            result=result+(m_data[i]*m_data[i+1])
    result+=m_data[len(m_data)-1]


#양수 리스트

if(len(p_data)%2==0): # 데이터 개수가 짝수일때
    for i in range(len(p_data)-1):
        if(i%2==0):
            if(p_data[i+1]==1): #1이면 더하는게 더 큼
                result=result+(p_data[i]+p_data[i+1])
            else:
                result=result+(p_data[i]*p_data[i+1])        
        
else:
    for i in range(len(p_data)-1):
        if(i%2==0):
            if(p_data[i+1]==1): #1이면 더하는게 더 큼
                result=result+(p_data[i]+p_data[i+1])
            else:
                result=result+(p_data[i]*p_data[i+1])
    result+=p_data[len(p_data)-1]
    

print(result)
728x90

'알고리즘 PS' 카테고리의 다른 글

[Python] 백준 #2437 저울  (0) 2020.12.19
[Python] 백준 #4796 캠핑  (0) 2020.12.19
[Python] 백준 #1138 한 줄로 서기  (0) 2020.12.19
[Python] 백준 #1080 행렬  (0) 2020.12.19
[Python] 백준 #1946 신입 사원  (0) 2020.12.19
Comments