[4코1파] 4명의 안드로이드 개발자와 1명의 파이썬 개발자의 코딩 테스트 서막 : 4코1파

Rule :
하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원

START :

[3코1파] 2023.01.04~ (34일차)
[4코1파] 2023.01.13~ (25일차)

Today :

2023.02.06 [34일차]

프로그래머스 LV2
숫자의 표현
https://school.programmers.co.kr/learn/courses/30/lessons/12924

문제 설명

Finn은 요즘 수학공부에 빠져 있습니다. 수학 공부를 하던 Finn은 자연수 n을 연속한 자연수들로 표현 하는 방법이 여러개라는 사실을 알게 되었습니다. 예를들어 15는 다음과 같이 4가지로 표현 할 수 있습니다.

1 + 2 + 3 + 4 + 5 = 15
4 + 5 + 6 = 15
7 + 8 = 15
15 = 15
자연수 n이 매개변수로 주어질 때, 연속된 자연수들로 n을 표현하는 방법의 수를 return하는 solution를 완성해주세요.

제한사항

n은 10,000 이하의 자연수 입니다.

입출력 예

입출력 예 설명

입출력 예#1
문제의 예시와 같습니다.

※ 공지 - 2022년 3월 11일 테스트케이스가 추가되었습니다.

문제 풀이 방법

첫 번째 시도, n까지의 int 형의 인덱스를 만든 후에
인덱스를 돌면서 합을 체크해서, 합이 n과 같으면 answer에 + 하고
15가 넘어서면 break 하고, 넘어가는 방법

여러 테스트 코스와 효율성 테스트에서 박살남

두 번째 시도, 굳이 리스트를 만들지 말고,
어차피 n은 무조건 마지막 자기 수를 가지고 있어서 1임을 인지함
그래서 for문이 아닌 while문을 주고,
걸리는 조건에 해당해서 break를 걸어주고 answer를 구하는 방법으로 전환함

첨엔.. 안됐음

이게 안될리가 없는데? 너 뭐하는?

알고보니 내가 테스트 하면서 n을 15로 지정했던 것임 미칭건가..
n을 15로 지정해놓은거 보고 로직 왜 이상하지 이러면서 30분 허비함 ... 나는 삼류

그롸치

내 코드

def solution(n):
    answer = 0
    for i in range(1, n+1):
        tmp = i
        
        while True:
            if i==n:
                answer +=1
                break      
                
            elif i>n:
                break
            
            tmp+=1
            i+=tmp
        
    return answer

증빙

다른 사람 풀이

한줄로 끝내서 뭐지 뭔 공식이지 찾아보니까 이해가 안됨..
리서치 하다 찾음
https://gkalstn000.github.io/2021/01/21/%EC%88%AB%EC%9E%90%EC%9D%98-%ED%91%9C%ED%98%84/

중등 수학 수준으로 푼다는데.. .왜이러세요.. 와이라노 와이라노

여담

죄다, ,수학이구만.... ㅁ ㅣ 치겠다 별 들ㅇ r

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글