[BOJ]1024(python)
| 1트
def solution(N, L):
#print(N // L)
now = L
while now <= 100:
#짝수 ->
point = N // now
if now % 2 == 0:
if point - (now / 2) < 0:
break
if 2 * point + 1 == N / (now / 2):
#print("even porint ::: " + str(point))
start = point - (now // 2)
return [num for num in range(start , start + now)]
# 홀수
else:
if (point - 1) - (now - 1) / 2 < 0:
break
if point == N // now:
start = int(point - (now - 1) // 2)
return [num for num in range(start ,start + now)]
now += 1
return -1
N, L = map(int, input().split())
print(solution(N, L))
- 짝수와 홀수를 나누어서 계산을 어떻게 해보려 했지만 실패했다
- 애초에 문자열로 반환하라고 했는데 리스트로 반환하는 이상한 짓(?)을 해서 어차피 안되는 코드
- 고쳐 써도 런타임 에러가 생긴다
| 2 ~ n트
def solution(N, L):
for length in range(L, 101):
start = (N - length * (length -1) / 2) / length
int_start = int(start)
if start == int_start and int_start >= 0:
return " ".join(map(str, [num for num in range(int_start, int_start + length)]))
return -1
N , L = map(int, input().split())
print(solution(N, L))
- N = 시작숫자 + (시작숫자 + 1) + ... + (시작숫자 + L - 1) 이라는 것을 이용해서 식을 세울 수 있다(고등학교 수학 필요)
N = L * 시작숫자 + L * (L - 1) / 2
시작숫자 = (N - L*(L - 1) / 2) / L
- 시작 숫자는 무조건 0 이상의 정수여야 한다(놀랍게도 0부터 시작해도 된다)
- 리스트로 반환하는 것이 아니라 str 값으로 반환하는 것이기 때문에 리스트를 문자열로 변환했다(이거 빼먹고 했다가 엄청 많이 틀렸다)
- 만일 길이가 100을 넘기거나 아예 그런 수가 없다면 -1을 return한다
오늘의 결론은 문제를 똑바로 읽어라....🤦♀️
Author And Source
이 문제에 관하여([BOJ]1024(python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zzarbttoo/BOJ1024저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)