파이썬(Python)/백준(Baekjoon) 문제 풀이

[백준, python] 15596번 : 정수 N개의 합(함수)

sunning 2022. 3. 20. 00:24
728x90
반응형

백준 15596번 문제 풀기

https://www.acmicpc.net/problem/15596

 

15596번: 정수 N개의 합

C++17, Java 8, Python 3, C11, PyPy3, C99, C++98, C++11, C++14, Go, C99 (Clang), C++98 (Clang), C++11 (Clang), C++14 (Clang), C11 (Clang), C++17 (Clang)

www.acmicpc.net


문제 설명

문제

정수 n개가 주어졌을 때, 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개의 합 (정수)

입력

첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다

 

출력

첫째 줄에 N의 사이클 길이를 출력한다.


알고리즘 및 설명 

드디어 함수 파트로 넘어올 수 있었다. 개념들은 사칙연산, 반복문, 배열 등 엄청 쉬운 기초 내용들이었는데 이렇게 하나하나 풀어가는데 오래 걸리다니...! 스스로가 어느 정도의 실력을 갖고 있는지 너무 적나라하게 알아버린 느낌이다.

그래서 함수 파트 이후부터는 내 코드가 정답이어도 다른 사람들이 올려둔 코드들과 비교해서 정리해보려고 한다. 그래야 내 실력이 더욱 더 늘 수 있을테니!

 

내가 구현한 알고리즘은 아래와 같다.

 

  • sunning algorithm (for문 활용)
def solve(a):
    ans = 0
    for i in range(len(a)):
        ans += a[i]
    return ans

 

간단한 문제였기 때문에 for문을 사용하여 간단히 작성이 가능하였다.

하지만 서치해 본 결과 좀 더 간단하게 만들 수 있는 방법이 있었다.

 

  • 새로운 방법 1 (sum 함수 활용)
def solve(a):
    ans = sum(a)
    return ans

첫 번째 새로운 방법은 sum 함수를 활용하는 것으로 가장 간단하고 빠르다. ans도 생략한다면 바로 return하는 것도 가능하다.

 

  • 새로운 방법 2 (for문 활용)
def solve(a):
    ans = 0
    for v in a:
    	ans += v
    return ans

두 번째 새로운 방법은 내가 생각한 것과 같이 for문을 이용하는 것인데, 차이점은 나는 for문 구현 시 배열 a의 index를 사용하여 for문을 돌렸고 새로운 방법은 배열 a의 원소들을 사용하였다는 점이다.

효율 측면에서는 비슷할 듯 하나 이 방법이 더 간단하게 코드를 구현할 수 있을 것이다.

728x90
반응형