728x90
반응형
728x90
반응형

문제는 다음과 같습니다.

https://www.acmicpc.net/step/4


 
import java.util.Scanner;

public class IfTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("========9498번========");
        int score = sc.nextInt();
        if(score>0 && score<=100){
            if(score>=90){
                System.out.println("A");
            }else if(score>=80 && score<90){
                System.out.println("B");
            }else if(score>=70 && score<80){
                System.out.println("C");
            }else if(score>=60 && score<70){
                System.out.println("D");
            }else{
                System.out.println("F");
            }
        }else{
            System.out.println("올바른 점수를 입력하세요.");
        }
    }
}
 

9498번 결과입니다.


   
import java.util.Scanner;

public class IfTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("========10817번========");
        int[] data = new int[3];
        for(int a=0; a<data.length; a++){
            data[a] = sc.nextInt();
        }
        for(int i=0; i<data.length;i++){
            for(int j=i+1; j<data.length; j++){
                if(data[i]>data[j]){
                    int imsi=data[i];
                    data[i]=data[j];
                    data[j]=imsi;
                }  //if end
            }  //for1 end
        }  //for2 end
        System.out.println(data[1]);
    }
}
 

10817번 결과입니다.

 
import java.util.Scanner;

public class IfTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("========10871번========");
        int n = sc.nextInt();
        int x = sc.nextInt();
        int data[] = new int[n];
		
        for(int i=0; i<data.length; i++){
            data[i] = sc.nextInt();
        } //for1 end
        for(int i=0; i<data.length; i++){
            if(data[i]<x){
                System.out.print(data[i]+" ");
            } //if end
        } //for2 end
    } //main end
} //class end
 

10871번 결과입니다.




 
import java.util.Scanner;

public class IfTest {
    public static void main(String[] args) {
        System.out.println("========1546번========");
        int n = sc.nextInt();
        int data[] = new int[n];
        for(int i=0; i<data.length; i++){
            data[i] = sc.nextInt();
        }
        double sum=0;
        double avg=0;
        for(int i=0; i<data.length;i++){
            for(int j=i+1; j<data.length; j++){
                if(data[i]>data[j]){
                    int imsi=data[i];
                    data[i]=data[j];
                    data[j]=imsi;
                }
            }System.out.print(data[i]+" ");
        }System.out.println();
        for(int i=0; i<data.length; i++){
            if(data[i]>0 && data[i]<=100){
                sum += (double) data[i]/data[data.length-1]*100;
            }else{
                System.out.println("정확한 점수를 입력하세요.");
            }
            avg = sum/data.length;
        }
        System.out.println("평균 : "+String.format("%.2f", avg));
    }
}
 

1546번 결과입니다.



728x90
반응형
728x90
반응형

문제는 다음과 같습니다.

https://www.acmicpc.net/step/3

 

 

 

  
import java.util.Scanner;

public class ForTestMain {
    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    	System.out.println("8393==============");
    	System.out.print("수를 입력 : ");
    	int a = sc.nextInt();
    	int sum = 0;
    	for(int i=0; i<a; i++){
    		sum = sum + i;
    	}
    	System.out.println(a + "의 합 "+ sum);
    	System.out.println("11720==============");
    	int n = sc.nextInt();
    	String num = sc.next();
    	int result = 0;
    	for(int i=0; i<n; i++){
    		result = result + num.charAt(i) - 48;
    	}
    	System.out.println(result);
    	System.out.println("11721==============");
        String words = sc.next();
        if(words.length()>0 && words.length()<=100){  //0보다 크며 100길이를 넘지 않는 조건
            for(int i=0; i<=words.length(); i++){
                int x = i*10; //
                int y = x+10; //
                String word="";
                if(x==0){ 
                	word = words.substring(0, 10); //substring(), x부터 y전까지 위치의 문자열을 가져오는 함수
                	System.out.println(word);
                }else if(y<=words.length()){
                	word = words.substring(x, y);
                	System.out.println(word);
                }else{
                	word = words.substring(x, words.length());
                	System.out.println(word);
                	break;
                }
            }
        }else{
        	System.out.println("글자수를 초과하거나 부족합니다.");
        }
        
    }
}

 

결과는 다음과 같습니다.

 

 

728x90
반응형
728x90
반응형

문제는 다음과 같습니다.

https://www.acmicpc.net/step/3

 

 
import java.util.Scanner;

public class ForTestMain {
    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
    	int a = sc.nextInt();
        
    	System.out.println("2739=======================");
    	for(int i=1; i<=9; i++){ //2739번
    		System.out.println(a+" * "+i+ " = "+ a*i);
    	}
        
    	System.out.println("2741=======================");
    	for(int i=1; i<=a; i++){ //2741번
    		System.out.println(i);
    	}
        
    	/*System.out.println("2742=======================");
    	for(int i=a; a>=1; a--){ //2742번, a값이 변해서 주석처리했습니다.
    		System.out.println(a);
    	}*/
        
    	System.out.println("2438=======================");
    	for(int i=1; i<=a; i++){ //2438번
    		for(int j=1; j<=i; j++){
    			System.out.print("*");
    		}
            System.out.println();
    	}
        
    	System.out.println("2439=======================");
    	for(int i=1; i<=a; i++){ //2439번
    		for(int j=a-i; j>0; j--){
    			System.out.print(" ");
    		}
    		for(int k=i; k>0; k--){
    			System.out.print("*");
    		}
    		System.out.println();
    	}
        
    	System.out.println("2440=======================");
    	for(int i=a; i>=1; i--){ //2440번
    		for(int j=1; j<=i; j++){
    			System.out.print("*");
    		}
            System.out.println();
    	}
        
    	System.out.println("2441=======================");
    	for(int i=0; i<a; i++){
    		for(int j=a-i; j<a; j++){
    			System.out.print(" ");
    		}
    		for(int k=a-i; k>0; k--){
    			System.out.print("*");
    		}
    		System.out.println();
    	}
        
    }       
}

결과는 아래와 같습니다.

 

728x90
반응형
728x90
반응형

문제는 다음과 같습니다.

https://www.acmicpc.net/problem/2609

1. 첫 번째 방법

import java.util.Scanner;

public class GCMLCMTestMain {
    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in); 
    	System.out.print("첫 번째 수를 입력 : "); 
    	int a = sc.nextInt(); 
    	System.out.print("두 번째 수를 입력 : "); 
    	int b = sc.nextInt(); 
    	int aa = a;
    	int bb = b;
    	while(a!=0){ 
    		if(a<b){ 
    			int temp = a; 
    			a = b; 
    			b = temp; 
    		} 
    		System.out.println("a값 : "+ a + " b값 : "+ b);
    		a = a-b; 
    	} 
    	System.out.println("최대공약수: " + b);
    	System.out.println("최소공배수: " + aa*bb/b);
    }
         
}



2. 두 번째 방법

유클리드 호제법을 이용하였습니다.

유클리드 호제법[편집]

똑같이 두 수 192와 72의 최대공약수를 이번에는 호제법으로 구하여 보자. 일단 192을 72로 나누어 나머지를 구한다.

이는 192을 72로 나누어 나온 나머지가 48라는 것을 의미한다. 이번에는 72을 나머지인 48로 나눈다.

이와 같은 연산을 나머지가 0이 될 때까지 반복한다.

나머지가 0이 되었으므로 연산을 중지한다. 이때, 나머지가 0이 되기 바로 직전의 연산에서의 나머지가 원래 두 수의 최대공약수가 된다.



import java.util.Scanner;

public class GCMLCMTestMain {    
    public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in); 
    	System.out.print("첫 번째 수를 입력 : "); 
    	int a = sc.nextInt(); 
    	System.out.print("두 번째 수를 입력 : "); 
    	int b = sc.nextInt(); 
    	int aa = a;
    	int bb = b;
    	while(a>0){ 
    		if(a<b){ 
    			int temp = a; 
    			a = b; 
    			b = temp; 
    		} 
    		System.out.println("a값 : "+ a + " b값 : "+ b);
    		a = a%b; 
    	} 
    	System.out.println("최대공약수: " + b);
    	System.out.println("최소공배수: " + aa*bb/b);
    }
         
}


첫 번째 방법 보다는 두 번째 방법에서 콘솔에 출력되는 메시지가 적은 것을 알 수 있습니다.

메시지가 적다는 것은 프로그램을 실행하는 데 있어 리소스를 조금 덜? 잡아 먹는 다고 느꼈는데요.

출력이 되는 것도 중요하지만 출력의 과정 또한 중요하다고 생각하였습니다.

728x90
반응형
728x90
반응형

선택정렬과 버블정렬에 대해 알아보겠습니다.


먼저 선택정렬(Selection Sort)입니다.



다음은 버블 정렬(Bubble Sort)입니다.



설명은 그림을 통해 이해하셨을 것이라 생각합니다.

자바 정렬 코드입니다.


public class SortingTest {
	public static void main(String[] args) {
		int ran[] = new int[5];
		for(int i=0; i<ran.length; i++){
			ran[i] = (int)(Math.random()*100)+1; //Math.random은 실수이므로 형변환을 해준다.
			System.out.print(ran[i]+" ");
		}System.out.println("");
		
		System.out.print("selection sort :");
		for(int i=0; i<ran.length;i++){
			for(int j=i+1; j<ran.length; j++){
				if(ran[i]>ran[j]){
					int imsi=ran[i];
					ran[i]=ran[j];
					ran[j]=imsi;
				}
			}System.out.print(ran[i]+" ");
		}System.out.println("");
		
		System.out.print("bubble sort : ");
		for(int i=0; i<ran.length;i++){
			for(int j=0; j<ran.length-1-i; j++){
				if(ran[j]>ran[j+1]){
					int imsi = ran[j];
					ran[j]=ran[j+1];
					ran[j+1]=imsi;
				}
			}System.out.print(ran[i]+" ");
		}
	
	}//main end
}//class end


버블정렬 소스 추가

  public class bubbleTest {     public static void main(String[] args) { boolean isCheck = false;         int ran[] = new int[5]; for(int i=0; i<ran.length; i++){     ran[i] = (int)(Math.random()*100)+1; //Math.random은 실수이므로 형변환을 해준다. System.out.print(ran[i]+" "); }System.out.println("");         while(true){             for(int i=0;i<=ran.length-2;i++){     if(ran[i]>ran[i+1]) {     int temp = ran[i];     ran[i]=ran[i+1];     ran[i+1]=temp;     isCheck = true;    }             }             if(isCheck==false) {         break;             }else{                 for(int k=0;k<=ran.length-1;k++) {                     System.out.print(ran[k]+" ");     isCheck = false;     }     } } //while end }// main end } //class end


정렬의 대한 결과입니다.




다음은 삽입 정렬(Insertion Sort)입니다.



출처 - 사진 출처

728x90
반응형
728x90
반응형

소수 구하기 문제 입니다.

https://www.acmicpc.net/problem/1929

 

먼저 소수에 대한 개념을 알아야겠죠?

소수는 약수가 1과 자기 자신 뿐인 수인데요

어떻게 구해야 할까??

자기 자신보다 작은 수로 나누어, 하나라도 나눠진다면 소수가 아니겠죠

저는 나머지가 0인 경우와 분자와 분모가 같다면 소수라 가정하여 코드를 짰습니다.

 

 

import java.util.Scanner;

public class test {
	public static void main(String[] args) {
		System.out.print("수를 입력 : ");
		Scanner sc = new Scanner(System.in);
		int scInt = sc.nextInt();
		System.out.print("수를 입력 : ");
		int scInt2 = sc.nextInt();
		for(int i=scInt; i<=scInt2; i++){
			for(int j=2; j<=i; j++){
				if(i%j==0){
					if(i==j){
						System.out.print(i+" ");
					}else break;
				}
			}
		}
		System.out.println();
		System.out.println(scInt+"이상 "+scInt2+"이하의 소수입니다.");
	}
	
}

 

실행 결과입니다!

 

 

728x90
반응형
728x90
반응형

문제는 다음과 같습니다.

https://www.acmicpc.net/problem/1003



import java.util.Scanner; public class test { private static int fiboZero = 0; private static int fiboOne = 0; public static int fibonacci(int n) { if(n==0){ fiboZero++; return 0; }else if(n==1){ fiboOne++; return 1; }else return fibonacci(n-1) + fibonacci(n-2); } public static void main(String[] args) { System.out.print("반복할 횟수를 입력하세요 : "); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for (int i=0; i<num; i++) { fibonacci(sc.nextInt()); System.out.println(i+"번째 수"+fiboZero + " "+(i+1)+"번째 수" + fiboOne); //초기화 부분 fiboZero = 0; fiboOne = 0; } } }

결과입니다.



추가로 n번째 피보나치 수열을 구하는 코드입니다.

import java.util.Scanner;

public class test {
	public static int fibonacci(int n){
		if(n==0){
			return 0;
		}
		else if(n==1 || n==2){
			return 1;
		}else{
			return fibonacci(n-1) + fibonacci(n-2);
		}
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("수를 입력하세요 : ");
		int scInt = sc.nextInt();
		for(int i=0; i<=scInt; i++){
			System.out.print(fibonacci(i)+" ");
		}
	}
	
}



결과입니다.



728x90
반응형
728x90
반응형

문제는 다음과 같습니다.

 

https://www.acmicpc.net/problem/2675

 

 

 

 

import java.util.Scanner;

public class test {
	public static void main(String[] args){
		char[] ch;
		Scanner sc = new Scanner(System.in);
		//test변수는 반복하려는 횟수
		int test = Integer.parseInt(sc.nextLine());
		for( int t=1; t<=test; t++){
			//ch 배열은 반복하려는 문자열
			ch = sc.nextLine().toCharArray();
			int num = Integer.parseInt(String.valueOf(ch[0]));
			for(int i=2; i<ch.length; i++){
				char a = ch[i];
				for(int j=0; j<num; j++){
					System.out.print(a);
				}
			}
			System.out.println();
		}
	}
}

 

 

실행 결과입니다.

 

 

728x90
반응형
728x90
반응형

+ Recent posts