https://school.programmers.co.kr/learn/courses/30/lessons/82612?language=java
// 정말 정말 간만에 프로그래머스를 시작했다. 취업이다 프로젝트다 바빠서 핑계를 댔지만 다시 알고리즘을 풀면서 더 높은 회사에 지원할 수 있는 역량을 가꿔나가고자 1일1커밋을 실천할 것이다. 화이팅!!
0원
놀이기구 N번째 이용
원래 이용료의 N배
1회차 - 100원
2회차 - 200원
3회차 300원
N번 타게 되면 내 금액 M에서 HM 모자란지 return
원래가격 : bm
count : c
1부터~c까지
내가가진금액 : m
얼마가 모자라냐 : hm
만약에
3n씩 가격이 늘어나고 c
20 - ((3*1)+(3*2)+(3*3)+(3*4)) = 10
for문을 돌리면되겠네
먼저 너무 간만에 문제를 풀다보니 기본문법 조차 기억안나기에 먼저 머릿속으로 어떻게 진행할 것인지 간략하게 정리해보았다. 정리해본결과 for문을 이용하면 될 것이라 판단하여 코드를 작성했다.
public class programmerse_1 {
public static void main(String[] args) {
int price = 3;
int money = 20;
int count = 4;
Solution sdf = new Solution();
System.out.println(sdf.solution(price, money, count));
}
static class Solution {
public long solution(int price, int money, int count) {
long answer = -1;
long am = 0;
for(long i = 1; i<=count; i++) {
am += price * i;
}
answer = (money - am)*answer;
if(money > am) {
answer = 0;
}
return answer;
}
}
}
문제의 핵심
1. for문의 활용
2. 절댓값으로 변환
3. 테스트 케이스 19 ~ 22
아마 처음 프로그래머스를 접하는 사람들은 내 코드가 분명히 맞는데 왜 안되는 것인가라고 생각이 들 것이다.
그렇다면 자신이 선언한 변수의 자료형을 유심히 지켜볼 필요가 있다.
바로 long형으로 선언을 하지 않았기에 오류가 난 것이다.
꼭 문제와 동일한 자료형을 써서 테스트 케이스 19~22에 시간이 안잡아 먹히길 바란다.
'개발자 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] JAVA_직사각형 별 찍기 (0) | 2023.04.17 |
---|---|
[프로그래머스] JAVA_행렬의 덧셈 (0) | 2023.04.16 |
[프로그래머스] JAVA_문자열뒤집기_StringBuffer/StringBuilder (0) | 2023.01.25 |
[JavaScript] 표 헤더 정렬구현 및 필터 구현 (0) | 2023.01.25 |
[SQL_ORACLE]프로그래머스_년, 월, 성별 별 상품 구매 회원 수 구하기_DISTINCT 활용 (2) | 2022.12.30 |