관리 메뉴

나만을 위한 블로그

[Algorithm] 합 / 곱 구하기, 값 누적하기 본문

개인 공부/Algorithm

[Algorithm] 합 / 곱 구하기, 값 누적하기

참깨빵위에참깨빵 2022. 11. 24. 02:00
728x90
반응형

모 유튜브 재생목록을 통해 파이썬 기초 문법을 적당히 훑고 나니 이 문법을 활용해 문제를 푸는 영상들이 몇 개 있었다.

알고리즘의 흐름 이해가 어려워서 공책에 써가면서 흐름을 이해하려고 해 보다가 나중에 다시 보려면 역시 블로그에 써 놓는 것만한 게 없다고 생각돼서 정리한다. 정리해 놨는데 나중에도 보자

 

합 구하기

 

예를 들어 1부터 입력값까지의 모든 숫자를 더해서 출력해야 한다고 가정한다. 즉 내가 5를 입력했으면 1+2+3+4+5를 계산해서 출력하는 것이다.

 

num = int(input("num : "))    # 1

temp = 0                      # 2

for i in range(1, num + 1):   # 3
    temp = temp + i           # 4

print(temp)                   # 5

 

  1. 사용자에게 입력값을 받는다. 이 때 그냥 받으면 이 입력값의 타입은 str이기 때문에 int로 캐스팅해야 한다
  2. temp는 덧셈 연산 결과를 담아두고 모두 더한 후 출력할 때 사용할 변수다. 먼저 0으로 초기화한다
  3. 1부터 입력값까지 +1씩 하면서 더해야 하니 반복문을 써야 한다. range()의 1번 인자에 1을 넣어서 1부터 시작한다고 알리고 2번 인자로 num + 1을 넣어서 입력값까지 모두 더할 수 있도록 한다. range()의 특성 때문에 +1을 해줘야 한다
  4. 반복문 안에서 임시 변수에 i를 더해준다. 이 i는 1부터 2, 3, 4 식으로 커져간다.
  5. 반복문이 끝나면 temp에 1부터 입력값까지 모두 더한 결과가 담긴다. 이것을 출력한다

 

1부터 입력값까지의 모든 숫자를 곱한 결과를 구하는 것도 반복문 안의 +를 *로 바꾸면 된다.

코틀린의 경우 아래와 같이 할 수 있다.

 

fun main() = with(System.`in`.bufferedReader()) {
    print("num : ")
    val num = readLine().toInt()
    var temp = 0

    for (i in 1..num) {
        temp += i
    }
    println(temp)
}

 

값 누적하기

 

그럼 0을 제외한 숫자들을 마구 입력하다가 0을 입력하면 지금까지 입력된 숫자들을 모두 더해야 한다면 어떨까?

"0을 입력하면"이라는 조건이 붙기 때문에 for 보다는 while을 쓰는 게 더 낫겠다.

 

num = int(input("num : "))      # 1

temp = 0                        # 2

while num != 0:                 # 3
    temp += num                 # 4
    num = int(input("num : "))  # 5

print(temp)                     # 6

 

  1. 사용자에게 입력값을 받는다. while문 안에서도 사용하기 때문에 숫자를 입력하고 엔터를 치면 계속해서 입력할 수 있다
  2. 위와 마찬가지로 계산 결과를 담고 출력할 때 사용할 변수를 0으로 초기화해둔다
  3. 0을 입력하지 않았을 경우에만 반복할 수 있게 while문을 작성한다
  4. 2번에서 0으로 초기화한 temp 변수에 기존에 temp에 담겨 있던 값에 입력값을 더한 다음 그 결과를 바꿔 담는다
  5. 1번에서 말했듯 0을 입력할 때까지 사용자에게 계속 숫자를 입력받아야 하기 때문에 while 안에도 같은 코드를 넣는다
  6. while문을 빠져나왔다는 건 사용자가 0을 입력했다는 것이다. 이 때 지금까지 입력된 숫자들을 담은 temp 변수를 출력한다

 

위 코드는 실행하면 이렇게 된다.

 

 

1, 2, 3을 입력할 때는 계속 숫자를 입력할 수 있지만 0을 입력하는 순간 프로그램이 종료되면서 1+2+3의 결과를 출력한다.

합 / 곱 구하기와 마찬가지로 지금은 더한 결과를 누적하지만 기호만 바꿔주면 곱한 결과를 출력하게 할 수 있다.

이것 또한 코틀린으로 바꾸면 아래와 같다.

 

fun main() = with(System.`in`.bufferedReader()) {
    var temp = 0
    do {
        print("num : ")
        val num = readLine().toInt()
        temp += num
    } while (num != 0)
}
반응형
Comments