프로그래밍 언어발행일 2023. 2. 21.원본 https://blog.naver.com/jword_/223023534965 ↗

파이썬 기초 알고리즘 (1부터 N까지의 합)

파이썬 기초 알고리즘 (1부터 N까지의 합) — #파이썬알고리즘기초 AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다 숫자 다루기 ...

#Languages#Naver Blog

#파이썬알고리즘기초

​

AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다

숫자 다루기 - 1부터 N까지 더하는 프로그램

이미지

실습과제로 1부터 N까지의 합을 구하는 프로그램을 만들어보았습니다. 제가 작성한 코드를 복기하면서 관련 지식을 더욱 견고하게 잡아나가고자 합니다.

알고리즘

  1. 사용자에게 입력값을 받아 해당 값만큼 범위를 지정한다.
  2. 해당범위에 속하는 모든 자연수를 더한다.
  3. 연산된 결과를 화면에 출력한다.

​

사용자의 입력값

input()

input()을 사용하면 사용자가 입력한 값을 str형태로 받을 수 있습니다. 단, str형식이라 숫자가 필요한 식에는 따로 변환해주어야합니다다. 저는 정수로 변환해주는 int()를 사용하였습니다.

n = int(input(n))

이제 사용자의 입력값이 n이라는 변수에 저장되었습니다.

함수를 만들자

자주쓰는 연산은 함수로!

처음에는 반복문으로 코드를 작성하였는데, 문제가 코드의 처음부터 끝까지 똑같은 반복문을 계속 써줘야 중간 중간 테스트가 가능했습니다.

​

테스트 과정에서 쓰일 코드들은 함수로 만들어 저장해주는게 좋다고 생각되었습니다.

def plus(n): result = 0 for i in range(1, n+1): result += i return result

result에 0을 넣어놓고, 반복문을 도는 i의 값을 계속 추가해줍니다. range()메서드를 활용하여 1부터 n까지 합이 더해지도록 코드를 작성하였습니다. 이후 호출한 함수에게 result를 반환합니다.

​

이렇게 함수로 작성하다보니 위에서 만들어둔 n=int(input())이 필요가 없어졌습니다. 코드는 뭐든 간결한게 좋으니 과감하게 버려줍니다.

​

숫자 다루기 - 홀수는 빼고 짝수는 더하는 프로그램

- + 로 쭉이어지게

이번에는 짝수는 더하고 홀수는 빼는 프로그램을 만들어 볼것입니다. 그리고 화면에 -1 +2 -3 +4 -5 +6 ··· 이런식으로 쭉 이어지게 출력하는걸 구현해보겠습니다.

알고리즘

  1. 사용자에게 입력값을 받아 해당 값만큼 범위를 지정한다.
  2. 해당범위에 속하는 짝수는 더해주고, 홀수는 빼준다.
  3. 화면에 -1 +2 -3 ··· 으로 출력하고 싶으니, 짝수, 홀수 구분하여 print()를 적용시켜준다.
  4. 최종 결과는 -1 +2 -3 ··· = result가 되도록 result를 반환하고, print()로 표현식을 완성시킨다.

함수를 만들자

def even\_plus(n): result = 0 evens = 0 odds = 0 for x in range(1, n + 1): if x % 2 == 0: evens += x elif x % 2 == 1: odds += x result = evens - odds return result

위와 동일한 방법으로 함수를 먼저 만들고 매개변수 n을받아 계산범위를 지정해줍니다. 이후 조건문을 활용하여 2로 나눈 나머지가 0인 (짝수) 숫자들은 evens에 더해지도록, 2로 나눈 나머지가 1인 (홀수) 숫자들은 odds에 더해지도록 코드를 작성합니다.

​

이후 result는 evens - odds로 계산해주면 됩니다.

​

print()

화면에 원하는 대로 출력하는 기술

화면에 표현하기

단순히 화면에 결과값만을 출력하는게 목적이 아니었습니다. 마지막 단계로 -1 +2 -3 +4 -5 +6 ··· 를 화면에 출력하는게 중요합니다. 화면 출력을 위해 print()함수를 사용하였습니다.

​

반복문 print()

반복문의 값을 화면에 출력하면 아래와 같이 세로로 쭉 이어진 값을 얻게됩니다.

for x in range(1, 11): print(x)
12345678910

우선 세로로 나열되는 숫자들을 가로로 표현 하는 방법을 알아보겠습니다.

for x in range(1, 11): print(x, end='')
12345678910

print()메서드에서 end를 사용할 수 있습니다. 그럼 각 요소가 끝난 후에 end=''글자가 추가된 상태로 가로로 정렬됩니다.

for x in range(1, 11): print(x, end=' ') *​**for x in range(1, 11): print(x, end*='+')
1 2 3 4 5 6 7 8 9 101+2+3+4+5+6+7+8+9+10+

띄어쓰기 표현도 가능하고 +로도 표현이 가능합니다. 단, 마지막 글자에도 +가 붙는 사실에 유의하세요.

​

print()를 활용하여 위에서 작성한 코드를 일렬로 나열해보겠습니다.

시행착오

def even\_plus(n): result = 0 evens = 0 odds = 0 for x in range(1,n + 1): if x % 2 == 0: evens += x print(x, end = '-') elif x % 2 == 1: odds +=x print(x, end = '+') result = evens - odds print('=', result) return result
even\_plus(5)1+2-3+4-5+= -3-3

원하는 값은 잘나왔지만, 맨앞에 -1이 적용되지 않는 것과 마지막 요소에도 +가 붙어버렸습니다. print()메서드의 특성을 활용하여 앞의 짝수에는 +를 앞에두고, 홀수에는 -를 앞에 추가하는 방향으로 변경하였습니다.

완성

def only\_even(n): result = 0 evens = 0 odds = 0 for x in range(1, n + 1): if x % 2 == 0: evens += x print('+' + str(x), end='') elif x % 2 == 1: odds += x print('-' + str(x), end='') result = evens - odds print('=' + str(result)) return result
even\_plus(14)-1 +2 -3 +4 -5 +6 -7 +8 -9 +10 -11 +12 -13 +14 = 77

이제 완성입니다. 중간에 정수 x값을 str(x)을 사용하여 문자열로 만들어 주었습니다. end=''의 경우 사용하지 않는다면 다시 세로로 배열되니 이점 유의하면서 익히시면 좋을것 같습니다 :D

​

두번째 실습은 To Do리스트 만들기 입니다.