일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- BFS
- py
- SQL
- D3
- level1
- Github
- androidstudio
- 내휴학생활중의아주큰일
- level4
- 컴퓨터비전
- SWEA
- 다시풀기
- 휴학
- 자바
- level3
- 프로그래머스
- git
- java
- 어렵다
- 컨트리뷰톤
- MSBuild
- 대학원
- LEVEL2
- Python
- build
- 파이썬
- 안드로이드스튜디오
- WebOS
- 대학원일기
- Matrix Factorization
- Today
- Total
bit가 눈 앞에서 왔다갔다
Py) SWEA 1859 백만장자 프로젝트 본문
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LrsUaDxcDFAXc
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1차 시도: (제한 시간 30분) 못풀었음
2차 시도: 6분
0. 입출력
1. 김예고리즘
1-1. 알고리즘
if문, 반복문 쓰는 방법을 생각했다.
1) 현재 수가 앞날보다 크고 뒷날보다 크다면 판매, 뒷날보다 작다면 판매 금지
2) 앞날보다 작고 뒷날 큰게 없다면 return 0
3) 수가 모두 동일한데 뒷날 더 큰게 있다면 구입, 뒷날 더 작은거 직전에 팔기
뭐 이런식으로.
수익은 "제일 비싼 날*총 구매량 - 수익은 이제까지 지난 날들 합" 이라고 설정해뒀다.
1-2. 코드
풀다 말았다.
2. Solution
2-1. 사용 자료구조 및 알고리즘: x
2-2. 로직
1) 맨 뒷 수를 값이 가장 비싼 날(max)로 일단 설정한다.
2) 뒤에서 부터 앞으로 가격을 비교하는데,
2-1) max보다 크다면 max값을 변경한다
2-2) max보다 작거나 같다면 수익 += max - 현재가격 이다.
2-3. 코드
case = int(input())
for tc in range(case):
N = int(input()) # 날 수
arr = list(map(int, input().split()))
max = arr[-1] # 제일 끝값이 max값이라 설정
profit = 0
for now in range(N-2, -1, -1):
if arr[now] >= max:
max = arr[now] # 최대값 변경
else:
profit += max - arr[now]
print('#{} {}'.format(tc+1, profit))
3. 피드백
1) 그동안 프로그래머스를 많이 사용해서 저런 식의 input 값을 파이썬으로 저렇게 받아본 적이 딱히 없었음.
arr = list(map(int, input().split()))
list를 적어주지 않아서 좀 해맴
2) range 빼먹음
-> 당연히 int는 iteratable하지 않다고 잔소리..
for tc in range(case):
3) 출력 저렇게 하는 건지 몰랐다. 외우자
4. 오늘의 외울거리
* 입력
case = int(input())
for tc in range(case):
N = int(input()) # 날 수
arr = list(map(int, input().split()))
* 출력
print('#{} {}'.format(tc+1, profit))
'Algorithm > Prob' 카테고리의 다른 글
Py) SWEA 14178 1차원 정원 (0) | 2022.11.05 |
---|---|
Py) SWEA 2007 패턴 마디의 길이 (0) | 2022.11.03 |
Py) 프로그래머스 77484 로또의 최고 순위와 최저 순위 (0) | 2022.07.16 |
Py) 프로그래머스 77485 행렬 테두리 회전하기 (0) | 2022.07.14 |
Py) 72411 메뉴 리뉴얼 (0) | 2022.07.07 |