Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- C
- 일상생활 영어표현
- 백준 5086번
- 백준 25305번
- 피라미드 출력
- 백준 #11382번 #
- 해석
- 논리 연산
- 백준 2525번
- 백준 1269번
- 배열
- C++
- javascript
- 백준 5597번
- 상세 풀이
- 잡다한 일
- 백준 2501번
- 연속된 숫자의 합
- 차이
- 직각 삼각형
- 대칭 차집합
- 백준 9506번
- Java
- 알고리즘
- Unity
- 백준 2587번
- html
- 백준 1157번
- 5073번
- 백준 27433번
Archives
- Today
- Total
YunDev
1. 알고리즘이란?, 연속된 숫자의 합 본문
컴퓨터는 프로그램의 명령에 따라 순서대로 일을 처리하고, 이 때 효율적인 결과를 얻기 위해 필요한 것이 알고리즘이다.
그리고 자료구조는 정보를 효율적으로 저장하고 관리하는 방법으로서 효율적인 자료구조의 선택이 곧 효율적인 알고리즘이다. 이처럼 알고리즘과 자료구조는 상호 보완 관계에 있다.
오늘부터 자료구조, 알고리즘을 함께 배우며 기록해보려고 한다.
반복문을 사용한 간단한 알고리즘부터 살펴보겠습니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("1부터 n까지의 합");
int n = sc.nextInt();
int sum = 0;
int i = 1;
while(i <= n) { //while문 사용
sum += i;
i++;
}
System.out.println("n : "+ sum);
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("1부터 n까지의 합");
int n = sc.nextInt();
int sum = 0;
int i;
for(i = 1; i <= n; i++) { //for문 사용
sum += i;
}
System.out.println("n : "+ sum);
}
}
1부터 입력받은 값 n까지의 합을 구하는 간단한 알고리즘입니다. 하나의 변수를 사용하는 반복문은 while문보다는 for문을 사용하는 편이 더 좋습니다.
이러한 방식으로 숫자의 합을 구할수도 있지만 가우스의 덧셈을 활용하여 구할 수 있습니다.
가우스의 덧셈은 연속된 숫자의 합을 구할 때 유용한 원리인데 어떤 숫자 a, b가 주어졌을 때 a부터 b까지의 연속된 숫자의 합을 구하기 위한 식은 (a+b) * (b-a+1)/2 입니다. 즉 a+b를 한 쌍으로 본다면 a부터 b까지의 합은 a+b를 a부터 b까지의 갯수/2 만큼 곱하는 것과 같은 것입니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("a부터 b까지의 합");
System.out.print("a:");
int a = sc.nextInt();
System.out.print("b:");
int b = sc.nextInt();
int tmp;
if(a >= b) { //a가 b보다 큰 경우
tmp = a;
a = b;
b = tmp;
}
int Sum = (a + b) * (b - a + 1) / 2; //가우스 덧셈 공식
System.out.println(a + "부터 " + b + "까지의 합: " + Sum);
}
}
'자료구조와 알고리즘' 카테고리의 다른 글
[자료구조와 알고리즘] 소수 구하기 (0) | 2025.01.21 |
---|---|
[자료구조와 알고리즘] 기수 변환 (1) | 2025.01.17 |
[자료구조와 알고리즘] 배열, 최댓값 (0) | 2025.01.15 |
[자료구조와 알고리즘] 다중 루프 (0) | 2025.01.13 |
구조적 프로그래밍, 드모르간 (0) | 2025.01.11 |