[구현 기초 - 반복문]백준 합(8393번) 풀이 (C++/Python)
저번에 조건문에 대해 간단하게 알아봤다면 이번에 반복문에 대하여 간단하게 알아보겠습니다.
반복문은 for문, while문이 존재합니다.
여기서는 둘 다 간단하게 알아보겠습니다.
C++에서 for문은 다음과 같은 형식으로 만들 수 있습니다.
for(초기식; 조건식; 증감식) {
// 실행할 코드
}
초기식은 반복 시작할 때 시작할 값을 의미하며 int i = 0으로 하면 초기 i 값을 0으로 시작한다는 뜻입니다.
그 다음 조건식은 저번에 배운 조건문에서 그 조건식을 의미합니다.
i < 10인 경우 i가 10 미만인 경우 for문 안에 있는 코드를 실행하고 조건식이 거짓이 되면 for문을 탈출합니다.
그 다음 증감식입니다. 해당 루프 실행하고 나서 다음 변수 값을 얼마로 설정할 지 정하는 식입니다.
i++이면 하나의 루프 실행한 후 1 증가하고, i += 2인 경우 하나의 루프 실행 후 2 증가하는 것을 의미합니다.
그 다음 while문입니다.
while(조건문) {
// 탈출할 수 있는 코드가 포함된 실행할 코드
}
여기서는 조건문만 있습니다.
해당 조건이 참인 경우 해당 코드를 실행하고 해당 조건이 거짓이면 while문을 탈출합니다.
초기식, 증감식이 따로 없어서 while문 코드 안에 따로 추가해야 하나, 조건에 따라 초기식 및 증감식을 다르게 할 수 있다는 장점이 존재합니다.
그 외에도 break 및 continue도 존재하는데 각각 다음과 같은 의미가 있습니다.
break : 해당 루프를 종료하고 반복문 밖으로 탈출합니다.
continue : 해당 루프를 종료하고 다음 루프로 진행합니다.
그 다음 Python에서도 for문과 while문이 존재합니다.
for i in range(초기값, 도달 직전 값, 증감식) :
# 실행할 코드
여기서 range()라는 함수에 대해 알고 갑니다.
예시로 range(0, 10, 1)인 경우 0부터 시작하여 1씩 증가하고 10 직전까지라는 뜻입니다.
즉, 0부터 9까지 1씩 증가하는 형태로 이루어져 있습니다.
만약 range(10, 0, -1)인 경우 10부터 시작하여 1씩 감소하고 0 직전까지 루프를 진행합니다.
즉, 10부터 1까지 -1씩 증가한다는 것을 의미합니다.
Python에서 for i in range(a, b, c)의 의미는 c가 양수인 경우 C++에서 for(int i = a; i < b; i += c)와 동일합니다.
그 다음 Python에서 while문은 다음과 같은 형식으로 작성할 수 있습니다.
while 조건식 :
# 탈출할 수 있는 코드가 포함된 실행할 코드
역시 동일하게 코드 안에 탈출할 수 있는 코드(증감식, break 등)가 포함되어야 합니다.
Python에서도 break, continue를 사용할 수 있습니다.
이제 반복문을 이용하여 해당 문제를 해결할 수 있습니다.
문제 : 합(8393번)(Bronze V)
문제 링크 : https://www.acmicpc.net/problem/8393
출처 : Baekjoon Online Judge
C++에서 다음과 같이 해결할 수 있습니다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
int result = 0;
for(int i = 1; i <= n; i++) {
result += i;
}
cout << result;
return 0;
}
while문을 사용한다면 다음과 같이 만들 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
int result = 0;
while(n) {
result += n;
n--;
}
cout << result;
return 0;
}
1부터 n까지 합을 구하는데 n = 5인 경우 1+2+3+4+5로 하냐 아니면 5+4+3+2+1로 하냐의 차이는 있지만 값은 똑같습니다.
같은 방식으로 Python으로 구현하면 다음과 같습니다.
[for문]
import sys
input = sys.stdin.readline
N:int = int(input().rstrip())
result:int = 0
for i in range(1, N+1, 1) :
result += i
print(result)
[while문]
import sys
input = sys.stdin.readline
N:int = int(input().rstrip())
result:int = 0
while N :
result += N
N -= 1
print(result)