eterno

백준 문제 풀이(자바) : 8393, 2753, 10950, 10871, 10952, 14681 본문

JAVA

백준 문제 풀이(자바) : 8393, 2753, 10950, 10871, 10952, 14681

영원한별똥별 2022. 9. 22. 10:29
728x90
반응형

자바 공부하는 학생이 푸는 백준 문제풀이 입니다.

제가 이해한 대로 푸는 것이기 때문에 내용이 틀릴 수도 있으니 참고용으로 봐주시고

혹시 틀린 부분이 있다면 말씀해주세요!

 

 

8393번 문제 : 합

 

8393번: 합

n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

소스코드

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int nCnt = 0;		
		
		for(int i=1; i<=n; i++) {
			nCnt = nCnt + i;			
		}
		System.out.println(nCnt);
		sc.close();
	}
}

풀이과정)

Scanner를 사용하여 사용자로부터 값을 입력받고 더한 값들을 담을 공간인 nCnt를 선언하였다.

for문을 사용하여 사용자가 입력한 값까지 반복되는 반복문을 만들고

nCnt에 i의 값을 누적하여 더한다.


2753번 문제 : 윤년

 

 

2753번: 윤년

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서

www.acmicpc.net

소스코드

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int year = sc.nextInt();
		
		if((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0)) {
			System.out.println("1");
		} else {
			System.out.println("0");
		}		
		sc.close();
	}
}

문제풀이)

Scanner를 사용하여 사용자로부터 값을 입력받고

나머지 연산을 써서 년도가 4로 나눴을때 0이 나오면서 년도를 100으로 나눴을 때 나머지가 0이 아니거나 년도를 400으로 나눴을 때 0일때 1일 출력되도록 if문을 썼다.


10950번 문제 : A + B - 3

 

10950번: A+B - 3

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

소스코드

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();	
		
		for(int i=0; i<n ; i++) {
			int a = sc.nextInt();
			int b = sc.nextInt();
			System.out.println(a+b);
		}
		sc.close();
	}
}

문제풀이)

Scanner를 사용하여 사용자로부터 값을 입력 받아야하고

사용자로부터 받은 값 까지 반복문을 실행하기 위해 입력받을 값을 for문 안에 넣어 두 수의 합을 반환하였다.

 


10871번 문제 : X보다 작은 수 구하기

 

10871번: X보다 작은 수

첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

소스코드

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int X = sc.nextInt();
		int[] z = new int[N];
		
		for(int i=0; i<N; i++) {			
			z[i] = sc.nextInt();
			if(z[i] < X) {
				System.out.print(z[i] + " ");
			}
		}		
		sc.close();	
	}
}

풀이과정)

정수 N과 X는 사용자로부터 받아야하는 값이여서 Scanner를 사용해 입력받는다.

N개의 숫자를 나열해야하니까 배열을 사용해서 수열 A의 값을 사용자로부터 입력 받는다.

만약 배열값이 입력받은 X보다 작은 경우 해당 배열 값을 반환하고 각 값들은 공백으로 구분해 출력하기위해 공백을 추가하였다.


10952번 문제 : A+B-5

 

 

10952번: A+B - 5

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

소스코드

import java.util.Scanner;

public class Main{

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);   
    
	    for(int i=0; ; i++) {    
		int A = sc.nextInt();
		int B = sc.nextInt();    
		
            if(A+B == 0) {
            break;
            }
		System.out.println(A+B);		
	    }
	    sc.close();  
	}
}

풀이과정)

두 수를 계속 입력받으려면 반복문 안에서 입력받아야 한다.

어떤 연산 결과 값이 나왔을 때 for문 대신 if문 사용하면 조건식 생략가능하기때문에

for문의 조건식을 생략하고 for문안에 if문을 넣어 두 수의 합이 0이되면 문장을 종료하도록 하였다.

두 수의 합이 0인결과값은 출력되지 않아야 함으로 if문이 끝나는 시점에 두 수의 합을 출력하였다.


14681번 문제 : 사분면 고르기

 

소스코드

import java.util.Scanner;

public class Main{

public static void main(String[] args){
    Scanner sc = new Scanner(System.in);    
    
    int x = sc.nextInt();
    int y = sc.nextInt();    
    
    if(x > 0 && y > 0) {
    	System.out.println("1");
    }
    if(x < 0 && y > 0) {
    	System.out.println("2");
    }
    if(x < 0 && y < 0) {
    	System.out.println("3");
    }
    if(x > 0 && y < 0) {
    	System.out.println("4");
    }
    sc.close();  
	}
}

풀이과정)

사분면의 조건

Scanner를 사용하여 사용자로부터 두 수 x, y 값을 입력받고 사분면의 조건에 따라 if문으로 조건에 맞는 값을 반환하였다.

728x90
반응형