망나니 AWOS의 일상
article thumbnail

 

내가 본 프로그래머스 문제들은 대부분 어려워 보였는데 이웃님들 중 한 분께서 프로그래머스 문제를 python으로 푸셨다. 문제 내용을 보고 나서 오! 나도 풀 수 있겠다 싶어서 풀어보았다.

 

제한사항에 money의 범위가 10억 적혀있어서 백준에서 풀던 느낌으로 BigInteger 쓸 생각이었는데...

백준보다 친절한 코딩 창... long 타입을 쓰면 된다고 나와있다.... 

 

return을 무조건 answer로 끝내야 하나? 

코딩 창 초기 상태

문제 풀이 

tot 변수를 하나 만들어서 N번 탈 때마다 놀이기구 이용료가 N배 증가하기 때문에 누적시켜주면 된다.

for (int i=1; i<=count; i++){
	tot += price * i;
}

그리고 tot에서 money를 빼서 양수가 나오게 되면 돈이 부족한 것이기 때문에 부족한 금액을 리턴해주면 되고

return tot - money;

그게 아니라면 0을 리턴 시켜주면 된다.

코딩 하기 전 공책에 끄적임...

처음 쓴 코드다 

class Solution {
    public long solution(int price, int money, int count) {
        long answer = -1;
        long tot = 0;
        for (int i=1; i<=count; i++){
            tot += price * i;
        }
        
        answer = tot - money;
        if(tot > money)
            return answer;
        else{
            answer = 0;
            return answer;
        }
            
    }
}

테스트 케이스 4번에서 틀렸습니다. 가 나왔다... 나머지 22개 통과했는데도 틀렸습니다 가 나온 걸 보면... 

테스트 케이스에서 하나라도 틀리면 안되는 듯하다...

 

그래서 코드 수 제한도 있나 싶어서... answer로 꼭 반환을 안 해도 된다면 코드 수를 더 줄이기로 했다.

class Solution {
    public long solution(int price, int money, int count) {
        long answer = -1;
        long tot = 0;
        for (int i=1; i<=count; i++){
            tot += price * i;
        }
        
        if(tot - money > 0)
            return tot - money;
        else{
            return 0;
        }
            
    }
}

통과... 

 

여담) 혹시 몰라서 첫 번째 코드 다시 돌려봤는데... 문제없다... 그럼 아까는 뭐지... 

profile

망나니 AWOS의 일상

@AWOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!