TIL

스파르타 내배캠 Spring 19일차

dzzzdee 2022. 11. 19. 00:13

2022.11.18

 오늘 자바 강의와 특강, CS특강도 들었지만 정리를 제대로 못해서 다음 TIL에 정리하기로 하고 !

오늘도 알고리즘을 한문제 풀었다 !

오늘의 목표는 자바로 알고리즘 풀기였지만 생각보다 버벅거려

파이썬으로 우선 풀고 자바로 다시 적어봐야지 했지만...나 자신 너무 자신만만 했꾸...

2시간 정도 걸리고 너무 오래걸리고 늦어서 자바로는 못 해봤다. 

오늘의 문제는 연속된 수의 합 이다

 

문제설명 

연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.

 

제한사항
1 ≤ num ≤ 100
0 ≤ total ≤ 1000
num개의 연속된 수를 더하여 total이 될 수 없는 테스트 케이스는 없습니다.

 

입출력 예 설명
입출력 예 #1 : num = 3, total = 12인 경우 [3, 4, 5]를 return합니다.
입출력 예 #2 : num = 5, total = 15인 경우 [1, 2, 3, 4, 5]를 return합니다.
입출력 예 #3 : 4개의 연속된 수를 더해 14가 되는 경우는 2, 3, 4, 5입니다.

 

우선 입출력 예를 몇개 더 만들고 규칙을 찾아봤다.

num이 짝수일 때와 홀수일 때 다른것을 찾았다.

규칙을 찾고 나눠서 해야겠다 싶어 일단 num이 짝수인 것 부터

풀어보려 했지만 거기서부터 막혔다.....

포기하기 전까지 혼자 풀어보겠다고 끙끙 앓이

지우면서 다시쓰고 해서 내가 어떤식으로 써서 틀렸었는지를 모르겠다...

다음부턴 잘적어놔야지

def solution(num, total):
    answer = []
    n = total/num - num//2
    n2 = total//num - ((num//2)-1)
    if total % num == 0 :
        for i in range(0, num) :   # 끝 숫자는 포함 하지 않음
            n += 1
            answer.insert(i, n-1)
    else :
        for i in range(0, num) :
            n2 += 1
            answer.insert(i, n2-1)
    return answer

프로그래머스 제출 후 채점하기 결과 100나와서 뿌듯했지만

다른사람들은 더 짧고 간단하게 썻을것 같아 내가 얼마나 못썻을려나 걱정이 됬다

구경을 해보니 진짜 1줄로 바로 끝내버리는 사람도 있었지만

나랑 비슷하게 하는 사람도 있어 다행?스러웠다

지금은 푸는데만 집중! 하고 나중엔 더 효율적이고 간단하게 짤 수 있도록 해야지!!!!