프로그래머스 두 정수 사이의 합(99클럽 코딩테스트 1일차 TIL)

KIMYEONGJUN·2024년 3월 27일
0
post-thumbnail

목적

얼마전에 n사에서 코딩테스트를 참가했는데 내가 너무 많이 부족한것같아서 코딩테스트를 준비할 곳이 없을까 찾다가 스파르타 99클럽 스터디에 참가하기로했다.

문제

우선 문제를 풀기전에 제한 조건을 먼저봤다. a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다. 내가 작성할 코드는 for문을 두번 사용할거기때문에 반복횟수는 20,000,000이라고 생각하게됐다. 왜냐하면 for이 두번돌기때문이다. 여기서 시간복잡도를 생각했봤을때 O(N)을 사용해도 괜찮을것같다고 생각이들었다.

O(N) 가용범위는 1,000 ~ 2,000만이다.

로직을 이렇게 작성하기로했다.

1. a가 큰 경우 
a가 b 보다 크다면 반복문을 b값 부터 a값까지 돌려가며 answer 값에 i값을 하나씩 더해준다.

2. b가 큰 경우
b가 a 보다 크다면 반복문을 a값 부터 b값까지 돌려가며 answer 값에 i값을 하나씩 더해준다.

3. a와 b가 같은 경우
a가 큰 경우, b가 큰 경우가 두조건이 아니라면 a와 b가 같다면 a와 b 둘중에 하나를 리턴해준다.
class Solution {
    public long solution(int a, int b) {
        long answer = 0;
        
        if(a > b) {
            for(int i = b; i < a+1; i++) {
                answer += i;
            }
            return answer;
        } else if(a < b) {
            for(int i = a; i < b+1; i++) {
                answer += i;
            }
            return answer;
        } else {
            return a;
        }
    }
}

마무리

원래 스터디가 25일에 시작하는건데 하루정도 늦게 들어오겠다. 이문제를 가지고 하루 이틀 생각해봤는데 그렇게 쉽게 떠오르지 않았다. 다른 사람이 작성한 코드를 보고나서 아 이런방법 괜찮다라는 생각이 들었다. 내가 코드를 작성하면서 생각을 못한 부분까지 공부할 수 있게돼서 기쁘고 코딩테스트를 볼때 수월하게 문제를 풀었으면 좋겠다.

profile
Junior backend developer

0개의 댓글