프로그래머스 두정수사이의합

HyunHwa Cho·2022년 7월 10일
0

코딩공부를 하며 간단한 스터디 (1일 1커밋, 1일1블로깅) 에 들었는데.. 주말에도 알고리즘 문제를 푸는 나의모습에.. 꽤나 신기하다 이제는..

이번 프로그래머스 문제는 두정수 사이의 합니다.

int a와 b가 주어지며 이 a,b를 포함한 a,b사이의 값을 모두 더한뒤 리턴해야한다.

예를 들어 a=3 , b= 5 라면 3,4,5 를 모두 더하여 12 리턴해야한다.
a=6 , b=3 이면 6 5 4 3 을 모두더하여 18이 리턴해야한다.
만약 a와 b 가 같다면 사이값이 없으므로 a값 혹은 b 값이 리턴되어야 한다.

package Programmers;

import java.util.ArrayList;

public class 두정수사이의합 {
    public static void main(String[] args) {
        System.out.println(solution(5,3));
    }
    //테스트 케이스
    public static long solution(int a, int b) {
        ArrayList<Integer> resultList = new ArrayList<>(); // 결과를 닮을 어레이리스트 생성
        int result = 0; //어레이리스트에서 모두 더한 합을 최종 결과값을 받을 result 초기화
        if(a == b){  //만약 a,b가 같으면 해당숫자를 리턴
            return a;
        }
        int c = 0; //변수를 닮을 c 초기화
        int d = 0; //변수를 닮을 d 초기화
        c = Math.max(a,b);  //a,b 비교후 큰값을 c로 지정
        d = Math.min(a,b);  //a,b 비교후 작은값을 d로 지정
        int i = 0; //while 문 int 값 초기화
        while(i<=c-d){ //while 문 으로 (Min값)c에서 1씩 더해가며 (Max값)d까지 반복 
            resultList.add(d+i); // i가 반복하며 해당값을 어레이리스트에 저장
            result = result + resultList.get(i); //어레이리스트 값을 결과값에 하나씩 더해줌
            i++; // 증감식
        }
        return result; // 결과 리턴
    }
}

//초기 수도코드
// a 와 b 를 비교하여 작은 숫자를 c 큰숫자를 d 로 할당 한다.
// 반복문을 통하여 c+ 1 씩 더한 값을 어레이리스트에 넣어준다.
// a+i = b 가 되면 반복문을 종료시킨다.
// 반복문으로 어레이리스트값을 모두 더한뒤 리턴한다.

이번문제도 어렵지 않게 풀었지만.. 다른사람들은 더 효율적으로 풀어냇다..
자괴감.. 흙 ㅠㅠ

profile
개발 공부 및 기록용 블로그 입니다.

0개의 댓글