일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- TS
- CI/CD
- 호이스팅
- ESlint
- map
- app router
- recoil
- useAppDispatch
- CORS
- 반공변성
- Promise
- RTK Query
- 결정 알고리즘
- autosize
- 리터럴 타입
- 인터섹션
- 무한 스크롤
- Cypress
- 타입 좁히기
- Jest
- 이분 검색
- dfs
- 공변성
- tailwind
- webpack
- SSR
- React
- 투포인터
- 태그된 유니온
- async/await
Archives
- Today
- Total
짧은코딩
1744 수 묶기 본문
반응형
https://www.acmicpc.net/problem/1744
내 풀이(반례 엄청봤지만 맞음)
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