상세 컨텐츠

본문 제목

BOJ_Function_15596_정수 N개의 합 (Java)

How To Java/Algorithm Problem Solution

by 카페코더 2020. 2. 20. 18:19

본문

반응형

문제 풀이에 대한 오류 지적 및 개선 방향 제시는 항상 환영합니다.
알고리즘 문제를 엄청 잘 풀고 막 문제 보자마자 아 이거네 쉽네 ㅎㅎ 이렇게 푸는 입장이 아니라서
그 어떤 문제에 대한 비판 지적 방향 제시는 언제나 감사하게 받겠습니다. 

이 문제가 올라가는 저장소 https://github.com/hwk0911/Junit-TDD

 

hwk0911/Junit-TDD

junit + Algorithm 연습. Contribute to hwk0911/Junit-TDD development by creating an account on GitHub.

github.com

문제

정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성하시오.

작성해야 하는 함수는 다음과 같다.

  • C, C11, C (Clang), C11 (Clang): long long sum(int *a, int n);
    • a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
    • n: 합을 구해야 하는 정수의 개수
    • 리턴값: a에 포함되어 있는 정수 n개의 합
  • C++, C++11, C++14, C++17, C++ (Clang), C++11 (Clang), C++14 (Clang), C++17 (Clang): long long sum(std::vector<int> &a);
    • a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
    • 리턴값: a에 포함되어 있는 정수 n개의 합
  • Python 2, Python 3, PyPy, PyPy3: def solve(a: list) -> int
    • a: 합을 구해야 하는 정수 n개가 저장되어 있는 리스트 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
    • 리턴값: a에 포함되어 있는 정수 n개의 합 (정수)
  • Java: long sum(int[] a); (클래스 이름: Test)
    • a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
    • 리턴값: a에 포함되어 있는 정수 n개의 합
  • Go: sum(a []int) int
    • a: 합을 구해야 하는 정수 n개가 저장되어 있는 배열 (0 ≤ a[i] ≤ 1,000,000, 1 ≤ n ≤ 3,000,000)
    • 리턴값: a에 포함되어 있는 정수 n개의 합

출처

제출할 수 있는 언어

C++14, Java, Python 3, C11, PyPy3, C, C++, C++11, C++17, Python 2, PyPy2, Go, C (Clang), C++ (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang)

채점

  • 예제는 채점하지 않는다.

 

오랜만에 BOJ의 문제를 몇 개 풀어봤는데, 신기하게도 함수를 구현하는 문제들이 생겼다!

기쁜 마음에 풀어봤다. 

문제 자체는 단순히 n개의 정수를 합한 값을 long 값으로 리턴하는 함수를 구현하는 문제다.
n개의 정수는 배열로 주어진다.

Solution.java

import java.util.Arrays;

public class BOJ_Function_15596_정수N개의합 {
    public long sum(int[] a){
        long result = 0;

        for(int index : a){
            result += index;
        }

        return result;
    }
}
  1. return을 위한 result 변수를 long으로 선언한다.
  2. for-each문법을 통해 result에 값을 계속 더한다.
  3. result 출력

 

SolutionTest.java

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class BOJ_Function_15596_정수N개의합Test {

    @Test
    void sum() {
        BOJ_Function_15596_정수N개의합 bf = new BOJ_Function_15596_정수N개의합();

        int[] a = {1,2,3,4,5};

        assertEquals(15, bf.sum(a));
    }
} 
  1. Junit5를 통하여 단위 Test 생성
  2. 매개변수로 사용될 int형 변수 a 선언
  3. assertEquals(예상 값, 실행 결과 값)를 통해 단위 테스트 진행

+ 예전부터 BOJ문제를 풀 때 최대한 머릿속으로 최적화를 진행해(필자의 문제점이다.) 문제를 풀었다.
   그러면 남들보다 살짝이라도 빠른 시간이 나오는데, 그게 너무 좋아서 문제를 더 풀기도 했다.
   처음 보고 재귀 함수로 해결할까 했는데, n의 범위가 지정되어있지 않아 포기했다.

반응형

관련글 더보기

GitHub 댓글

댓글 영역