코딩테스트 연습 - 숫자의 표현 | 프로그래머스 스쿨 (programmers.co.kr)
난이도가 높지 않은 문제였다.
[python]
def solution(n):
answer=1
for i in range(1, n+1):
sum=i
for j in range(i, n-1):
sum+= j+1
if sum > n:
break
if sum == n:
answer+=1
break
return answer
처음에 sum의 크기를 고려하지 않았다가 효율성 테스트에서 시간초과가 발생했다.
계산 횟수를 줄이기 위해 sum이 n보다 클 경우 for문을 빠져나오게 처리하였더니
모든 케이스에서 통과할 수 있었다.
[java]
class Solution {
public int solution(int n) {
int answer=1;
int sum=0;
for(int i=1;i<n+1;i++){
sum = i;
for(int j=i;j<n-1;j++){
sum += j+1;
if(sum > n){
break;
}
if(sum == n){
answer +=1;
break;
}
}
}
return answer;
}
}
*하단의 블로그를 참고하였는데 훨씬 간단한 코드가 있다는 것을 알았다.
수학 공식을 활용한 코드로 바로 이해하기에는 어려웠는데 참고하면 좋을 것 같다.
728x90
'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글
[python/java] 프로그래머스 Lv2. - 최솟값 만들기 (0) | 2023.05.05 |
---|---|
[python] 프로그래머스 Lv2. - 줄 서는 방법 (0) | 2023.05.05 |
[java/python] 프로그래머스 Lv.2 - 땅따먹기 (0) | 2023.05.04 |
[python] 10986 - 나머지 합 (0) | 2023.04.26 |
[python] 2447 - 별 찍기 (0) | 2023.04.20 |