Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Python
- paramiko
- pip
- Linux
- VS Code
- 명령어
- Selenium
- ubuntu
- pytorch
- pandas
- C
- C#
- Visual Studio
- mysql
- 채보
- YOLO
- Docker
- 핑거스타일
- label
- JSON
- LIST
- error
- windows forms
- OpenCV
- Numpy
- 오류
- C++
- 기타 연주
- 프로그래머스
- SSH
Archives
- Today
- Total
기계는 거짓말하지 않는다
[Programmers] 우박수열 정적분 (Python) 본문
프로그래머스 - 우박수열 정적분 문제입니다.
자연수 k와 범위(ranges)가 주어지면 해당 범위 넓이를 리턴하는 문제입니다.
범위가 같거나 유효하지 않은 구간이 주어지는 경우도 있습니다.
문제의 콜라츠 추측대로 값들을 구하고, x축 길이가 1인 구간들의 넓이를 구합니다.(위 예시는 다섯 구간)
그 후 주어진 범위(ranges)의 넓이 합들을 리턴합니다.
def solution(k, ranges):
answer = []
point_list = []
point_list.append(k)
# 콜라츠 추측 계산
while k != 1:
if k % 2 == 0:
k = int(k / 2)
else:
k = (k * 3) + 1
point_list.append(k)
range_area = []
# 구역 넓이 계산
for i in range(0, len(point_list) - 1):
if point_list[i] < point_list[i + 1]:
range_area.append(point_list[i] + ((point_list[i + 1] - point_list[i]) / 2))
else:
range_area.append(point_list[i + 1] + ((point_list[i] - point_list[i + 1]) / 2))
for r in ranges:
# 유효하지 않은 구간
if len(range_area) + r[1] < r[0]:
answer.append(-1.0)
# 같은 구간
elif len(range_area) + r[1] == r[0]:
answer.append(0.0)
else:
temp_value = 0
# 구간 넓이 (미리 구한 구역 넓이의 합)
for i in range(r[0], len(range_area) + r[1]):
temp_value += range_area[i]
answer.append(temp_value)
return answer
'Programming Test' 카테고리의 다른 글
[Programmers] 다음 큰 숫자 (C++) (0) | 2022.10.09 |
---|---|
[Programmers] 프린터 (0) | 2021.06.24 |
[Programmers] n진수 게임 (0) | 2021.05.27 |
[Programmers] 더 맵게 (0) | 2021.05.18 |
[Programmers] 올바른 괄호 (0) | 2021.05.03 |
Comments