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
- 알고리즘
- 파이썬
- Java
- Algorithm
- cs공부
- GAN
- softeer
- cim
- re_lunchu
- 토이프로젝트
- 스마트팩토리
- 탐욕법
- 소프티어
- 현대자동차
- 딥러닝
- JavaScript
- programmers
- 자바스크립트
- alogorithm
- 백준
- heapq
- 프로그래머스
- 힙큐
- Baekjoon
- 티스토리챌린지
- boj
- 자바
- 현대
- 오블완
Archives
- Today
- Total
eaz_coding
[Programmers] 우박수열 정적분(Python, Javascript) 본문
문제
https://school.programmers.co.kr/learn/courses/30/lessons/134239
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
Python
def collatz(k):
result = [k]
while k > 1:
if k % 2:
k = k*3+1
else:
k //= 2
result.append(k)
return result
def solution(k, ranges):
answer = []
lst = collatz(k)
n = len(lst)
for a, b in ranges:
t = 0
if b <= 0:
b = n + b
if a >= b:
answer.append(-1.0)
continue
for i in range(a, b-1):
t += (lst[i] + lst[i+1]) / 2
answer.append(t)
return answer
Javascript
function collatz(k) {
let lst = [k];
while (k > 1) {
if (k % 2 == 0) {
k /= 2;
} else {
k = k*3 + 1;
}
lst.push(k);
}
return lst;
}
function solution(k, ranges) {
var answer = [];
const lst = collatz(k);
const n = lst.length;
for (let i = 0; i<ranges.length; i++){
let [a, b] = ranges[i];
if (b <= 0) {
b = n + b;
}
if (b <= a) {
answer.push(-1.0);
continue
}
t = 0;
for (let j=a; j < b-1; j++){
t += (lst[j]+lst[j+1]) / 2;
}
answer.push(t);
}
return answer;
}
'eaz_algorithm' 카테고리의 다른 글
[Programmers] 점 찍기(Python, Javascript, Java) (0) | 2024.07.01 |
---|---|
[Programmers] 광물 캐기(Python, Javascript) (0) | 2024.06.26 |
[Programmers] 문자열 압축(Python, Javascript) (0) | 2024.06.25 |
[Programmers] 하노이의 탑(Python, Javascript) (0) | 2024.06.21 |
[Programmers] 리코쳇 로봇(Python, Javascript) (1) | 2024.06.18 |