Doit 알고리즘
업데이트:
네 값의 최댓값을 구하기
값을 일일이 입력하면서 테스트하기보단 메소드로 처리하면 편하다.
package doit.algorism.practice;
public class chap01 {
static int max4(int a, int b, int c, int d) {
int max = a;
if(b>max) max = b;
if(c>max) max = c;
if(d>max) max = d;
return max;
}
public static void main(String args[]) {
System.out.println("max4(5,4,3,2)의 최대값 : " + max4(5,4,3,2));
System.out.println("max4(5,4,6,2)의 최대값 : " + max4(5,4,6,2));
System.out.println("max4(1,4,4,2)의 최대값 : " + max4(1,4,4,2));
System.out.println("max4(3,4,7,1)의 최대값 : " + max4(3,4,7,1));
System.out.println("max4(2,1,3,2)의 최대값 : " + max4(2,1,3,2));
System.out.println("max4(1,4,1,2)의 최대값 : " + max4(1,4,1,2));
System.out.println("max4(3,9,1,2)의 최대값 : " + max4(3,9,1,2));
}
}
세 값의 최솟값 구하기
package doit.algorism.practice;
public class chap01 {
static int min3(int a, int b, int c) {
int min = a;
if (b<min) min = b;
if (c<min) min = c;
return min;
}
public static void main(String args[]) {
System.out.println("min3(5,3,4)의 최솟값 = " + min3(5,3,4));
System.out.println("min3(2,1,3)의 최솟값 = " + min3(2,1,3));
System.out.println("min3(11,25,4)의 최솟값 = " + min3(11,25,4));
System.out.println("min3(21,9,6)의 최솟값 = " + min3(21,9,6));
System.out.println("min3(1,5,3)의 최솟값 = " + min3(1,5,3));
System.out.println("min3(11,7,8)의 최솟값 = " + min3(11,7,8));
}
}
네 값의 최솟값 구하기
package doit.algorism.practice;
public class chap01 {
static int min4(int a, int b, int c, int d) {
int min = a;
if(b<min) min = b;
if(c<min) min = c;
if(d<min) min = d;
return min;
}
public static void main(String args[]) {
System.out.println("min4(5,8,1,3)의 최솟값 = " + min4(5,8,1,3));
System.out.println("min4(9,3,11,6)의 최솟값 = " + min4(9,3,11,6));
System.out.println("min4(5,7,9,2)의 최솟값 = " + min4(5,7,9,2));
System.out.println("min4(25,8,15,6)의 최솟값 = " + min4(25,8,15,6));
System.out.println("min4(1,4,6,7)의 최솟값 = " + min4(1,4,6,7));
}
}
세 값에 대해 중앙값 구하기
package doit.algorism.practice;
public class chap01 {
static int med3(int a, int b, int c) {
if(a>=b) {
if(b>=c) {
return b;
}else if(c>a) {
return a;
}else {
return c;
}
}else if(a>c) { // 위 if문에서 이미 a는 b와 같지 않고 작다고 판별 남.
return a;
}else if(b>c) {
return c;
}else {
return b;
}
}
public static void main(String args[]) {
System.out.println("med3(6,1,3) 의 중앙값 : " + med3(6,1,3));
System.out.println("med3(3,2,1) 의 중앙값 : " + med3(3,2,1));
System.out.println("med3(7,3,6) 의 중앙값 : " + med3(7,3,6));
System.out.println("med3(2,4,9) 의 중앙값 : " + med3(2,4,9));
System.out.println("med3(6,2,7) 의 중앙값 : " + med3(6,2,7));
}
}
- 중앙 값을 구하는 메서드는 다음과 같이 작성할 수도 있음.
하지만 위 메소드에 비해 효율이 떨어진다. 그 이유는?
static int med3(int a, int b, int c){
if((b>=a && c<=a) || (b<=a && c>=a)){
return a;
}else if((a>b && c<b) || (a<b && c>b)){
return b;
}else{
return c;
}
}
가장 처음의 if가 성립한 경우, 2번째 if문에서도 같은 판단을 수행하므로 효율이 나빠진다.
while문을 이용해 반복이 종료된 후 변수 i값이 n+1이 되는지, i값 출력하기
package doit.algorism.practice;
public class chap01 {
import java.util.Scanner;
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.print("n의 값 : ");
int n = sc.nextInt();
int sum = 0;
int i = 1;
while(i<=n) {
sum += i;
i++;
}
System.out.println("총 합 : " + sum);
System.out.println("i값 : " + i);
}
}
for문을 이용해 n이 7일경우 ‘1+2+3+4+5+6+7=28’로 출력하기
package doit.algorism.practice;
import java.util.Scanner;
public class chap01 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.print("n의 값 : ");
int n = sc.nextInt();
int sum = 0;
for(int i=1; i<=n; i++) {
sum += i;
if(i==n) {
System.out.print(i + " = " + sum);
}else {
System.out.print(i + " + ");
}
}
}
}
가우스의 덧셈 방법을 이용하여 1부터 n까지의 정수 합을 구하기
가우스의 덧셈 : (n × (n+1)) / 2 만약 n이 100이라면, 101을 100번 곱한 값을 2로 나누면 1부터 100까지의 값을 구할 수 있다.
package doit.algorism.practice;
import java.util.Scanner;
public class chap01 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.print("n의 값 : ");
int n = sc.nextInt();
int sum = n*(n+1) /2;
System.out.println("1부터 " + n + " 까지의 총 합 : " + sum);
}
}
정수 a,b를 포함하여 그 사이의 모든 정수의 합을 구하여 반환하는 메서드
package doit.algorism.practice;
import java.util.Scanner;
public class chap01 {
static int sumof(int a, int b) {
int sum = 0;
if(a<b) {
for(int i=a; i<=b; i++) {
sum += i;
}
}else {
for( int i=b; i<=a; i++) {
sum += i;
}
}
return sum;
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.print("a값 : ");
int a = sc.nextInt();
System.out.print("b값 : ");
int b = sc.nextInt();
System.out.print("총 합 : " + sumof(a,b));
}
}
공유하기
Twitter Google+ LinkedIn
댓글남기기