알고리즘이란?
어떤 문제를 해결하기 위한 절차로, 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이루어진 집합
1. 세 값의 최댓값 구하기
[책에 나온 코드]
public class BookEx {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.println("세 정수의 최댓값을 구합니다.");
System.out.print("a의 값 : "); int a = stdIn.nextInt();
System.out.print("b의 값 : "); int b = stdIn.nextInt();
System.out.print("c의 값 : "); int c = stdIn.nextInt();
int max = a;
if(b > max) max = b;
if(c > max) max = c;
System.out.println("최댓값은 " + max + " 입니다.");
}
}
실행결과
[내가 짠 코드]
1) 한글코딩
/* 스캐너 함수 사용
* 세 정수의 최댓값을 구하니 입력해달라는 문구 출력
* 스캐너로 정수 a 입력 받기
* 스캐너로 정수 b 입력 받기
* 스캐너로 정수 c 입력 받기
* 최댓값을 저장하는 변수 선언
* 최댓값 변수에 정수 a 저장
* 만약 정수 a보다 정수 b가 크다면 (a<b가 참이라면)
* 최댓값 = 정수 b 대입 (max = b)
* b가 더 클 때 만약 정수 b보다 정수 c가 크다면 (b<c)
* 최댓값 = 정수 c 대입 (max = c)
* 만약 정수 b보다 a이 크다면(a<b가 거짓이라면)
* 정수 a과 c 비교
* c가 더 크다면
* 최댓값 = 정수 c 대입 (max = c)
* 아니라면 최댓값은 정수 a 그대로
* */
2) 코드
Scanner sc = new Scanner(System.in);
System.out.println("세 정수의 최댓값을 구합니다. ");
System.out.println("3개의 정수를 입력해주세요 >>");
int a;
int b;
int c; // 스코프 문제로 밖에 선언
while(true) { // 올바른 수를 입력할 때까지 계속 입력받음
a = sc.nextInt();
b = sc.nextInt();
c = sc.nextInt(); // 정수 입력
if(a!=b && b!=c && c!=a) {
break;
}
System.out.println("세 정수는 중복될 수 없습니다! 다시 입력해주세요 >>");
}
int max = a;
if(a < b) {
max = b;
if(b < c ) {
max = c;
}
} else {
if(a < c) {
max = c;
}
}
System.out.println("최댓값은 " + max + " 입니다.");
}
}
실행결과
세 정수가 중복될 때는 다시 입력받을 수 있도록 while문과 종료조건을 추가하였다.
책에 나온 예제가 UI가 더 좋아보여서 UI를 더 깔끔하고 보기 좋게 수정하면 좋을 것 같다.
또, 이미 접한 예제라서 술술 쓸 수 있었는데 짜본 적 없는 알고리즘을 만나면 헤맬 것 같다.. 열심히 알고리즘 연습하자!
[최댓값을 구하는 과정]
1. max에 a값을 넣는다.
2. a값이 b값보다 작을 경우, b를 max에 넣고 b와 c를 또 비교해서, c가 더 크면 c를 max에 넣는다.
(a<b일 때, max= b<c? c : b)
3. a값이 b값보다 클 경우, a와 c를 비교해서 c가 더 클 경우 max에 c를 넣는다.
(a>b일 때, max = a<c? c: a)
참고로, 최댓값을 여러 번 반복하여 구할 때는 이를 메서드로 만들어서 처리하도록 하자!
다음 포스팅은 중앙값 구하기가 될 것 같다. 최대값/최소값은 익숙하지만 중앙값은 그게 아니라서 어떻게 하면 중앙값을 구할 수 있을지 책을 보기 전에 알고리즘을 먼저 생각해보려고 한다.
'IT > 알고리즘|자료구조' 카테고리의 다른 글
스택(Stack) (0) | 2025.06.04 |
---|---|
반복 과정에서 조건 판단하기 (0) | 2025.02.06 |
자료구조와 함께 배우는 알고리즘 입문 [자바편] : 가우스 덧셈 (0) | 2025.01.11 |
자료구조와 함께 배우는 알고리즘 입문 [자바편] : 중앙값 구하기 (1) | 2025.01.09 |
발표 준비 - 선택정렬에 대하여 (1) | 2025.01.05 |