반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

1744 수 묶기 본문

코딩 테스트(Python)/백준, 프로그래머스

1744 수 묶기

5_hyun 2022. 2. 3. 02:08
반응형

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

 

1744번: 수 묶기

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

www.acmicpc.net

 

내 풀이(반례 엄청봤지만 맞음)

 

ary =[[], [], [], []]
n = int(input())
for i in range(n):
    x = int(input())
    if x > 0:
        ary[0].append(x)
    elif x == 0:
        ary[1].append(x)
    else:
        ary[2].append(x)
ary[2].sort()
while(True):
    if(len(ary[2]) <= 1):
        break
    mul = ary[2][0] * ary[2][1]
    ary[3].append(mul)
    del ary[2][0]
    del ary[2][0]
ary[0].sort(reverse = True)
while(True):
    if(len(ary[0]) <= 1):
        break
    a = ary[0][0]
    b = ary[0][1]
    if(a == 1 or b == 1):
        mul = a + b
    else: 
        mul = a * b
    ary[3].append(mul)
    del ary[0][0]
    del ary[0][0]
if(len(ary[2]) > 0):   
    for i in range(len(ary[1])):
        if(len(ary[2]) == 0):
            break
        del ary[2][0]
result = sum(ary[0]) + sum(ary[2]) + sum(ary[3])
print(result)

ary에 양수, 0, 음수, 곱한 값을 각각 따로 저장한다. 그리고 음수를 오름차순으로 정렬한다. 그 후 while 문에서 큰 음수 값끼리 더한다. 그리고 양수는 내림차순으로 정렬한다. 그리고 큰 수부터 곱한다. 이러다가 두개의 수 중에서 하나라도 1이라면 더한다. 그리고 음수가 존재하면 0으로 곱해준다. 그 다음에 양수, 음수, 곱한 값 리스트를 다 더해준다.

반응형

'코딩 테스트(Python) > 백준, 프로그래머스' 카테고리의 다른 글

10828 스택  (0) 2022.02.05
16435 스네이크버드  (0) 2022.02.04
1343 폴리오미노  (0) 2022.02.02
1758 알바생 강호  (0) 2022.02.01
11508 2+1 세일  (0) 2022.01.30
Comments