Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- jvm 작동 원리
- 안드로이드 라이선스 종류
- 안드로이드 레트로핏 사용법
- rxjava cold observable
- 2022 플러터 안드로이드 스튜디오
- 클래스
- android ar 개발
- 자바 다형성
- rxjava hot observable
- 안드로이드 유닛테스트란
- 스택 큐 차이
- 큐 자바 코드
- 안드로이드 레트로핏 crud
- jvm이란
- 플러터 설치 2022
- android retrofit login
- 안드로이드 유닛 테스트
- 안드로이드 라이선스
- 안드로이드 유닛 테스트 예시
- 멤버변수
- ar vr 차이
- ANR이란
- Rxjava Observable
- 안드로이드 os 구조
- 서비스 쓰레드 차이
- 객체
- 서비스 vs 쓰레드
- 스택 자바 코드
- rxjava disposable
- 2022 플러터 설치
Archives
- Today
- Total
나만을 위한 블로그
[Algorithm] 합 / 곱 구하기, 값 누적하기 본문
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
- 사용자에게 입력값을 받는다. 이 때 그냥 받으면 이 입력값의 타입은 str이기 때문에 int로 캐스팅해야 한다
- temp는 덧셈 연산 결과를 담아두고 모두 더한 후 출력할 때 사용할 변수다. 먼저 0으로 초기화한다
- 1부터 입력값까지 +1씩 하면서 더해야 하니 반복문을 써야 한다. range()의 1번 인자에 1을 넣어서 1부터 시작한다고 알리고 2번 인자로 num + 1을 넣어서 입력값까지 모두 더할 수 있도록 한다. range()의 특성 때문에 +1을 해줘야 한다
- 반복문 안에서 임시 변수에 i를 더해준다. 이 i는 1부터 2, 3, 4 식으로 커져간다.
- 반복문이 끝나면 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
- 사용자에게 입력값을 받는다. while문 안에서도 사용하기 때문에 숫자를 입력하고 엔터를 치면 계속해서 입력할 수 있다
- 위와 마찬가지로 계산 결과를 담고 출력할 때 사용할 변수를 0으로 초기화해둔다
- 0을 입력하지 않았을 경우에만 반복할 수 있게 while문을 작성한다
- 2번에서 0으로 초기화한 temp 변수에 기존에 temp에 담겨 있던 값에 입력값을 더한 다음 그 결과를 바꿔 담는다
- 1번에서 말했듯 0을 입력할 때까지 사용자에게 계속 숫자를 입력받아야 하기 때문에 while 안에도 같은 코드를 넣는다
- 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)
}
반응형
'개인 공부 > Algorithm' 카테고리의 다른 글
[Algorithm] 코틀린 알고리즘 문제풀이 팁 사이트 모음 (0) | 2023.01.10 |
---|---|
[Algorithm] 최소값, 최대값 구하기 (0) | 2022.12.05 |
[Algorithm] 시간 복잡도란? 공간 복잡도란? 빅 오 표기법이란? (0) | 2022.11.23 |
[Algorithm] 알고리즘 서적 별 목차 및 알고리즘 종류 정리 (0) | 2021.10.28 |
[Algorithm] 알고리즘이란? 알고리즘 vs 자료구조 차이란? (0) | 2021.06.26 |
Comments