본문 바로가기

문제풀기/백준 문제풀이

[알고리즘] 브루트-포스법 문제 풀이(백준 2798번, 2231번)

728x90
반응형

1. 블랙잭(백준 2798번)

 

2798번: 블랙잭 (acmicpc.net)

 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

 

▷ 풀이 코드

import java.io.IOException;
import java.util.Scanner;

public class BlackJack {
	
	public static void main(String args[]) throws IOException {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		
		int m = sc.nextInt();
		
		int arr[] = new int[n];
		
		for(int i=0; i<n; i++) {
			arr[i] = sc.nextInt();
		}
		
		int result = search(arr, n, m);
		
		
		System.out.println(result);
	}
	
	public static int search(int arr[], int n, int m) {
		int result = 0;
		
		for(int i=0; i<n-2; i++) {
			for(int j=i+1; j<n-1; j++) {
				for(int k=j+1; k<n; k++) {
					
					int temp = arr[i] + arr[j] + arr[k];
					
					if(temp == m) {
						return temp;
					}
					
					if(temp < m && temp > result) {
						result = temp;
					}
					
				}
			}
		}
		return result;
	}
}

 

 

 

 

2. 분해(백준 2231번)

 

2231번: 분해합 (acmicpc.net)

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

 

▷ 풀이 코드

import java.util.Scanner;

public class DSum {
	
	public static void main(String args[]){
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		
		
		for(int i=1; i<=n; i++) {
			int temp = i;
			int sum = temp;
			
			while(temp != 0) {
				sum += temp%10;
				temp /= 10;
			}
			
			if(sum == n) {
				n = i;
				break;
			} else if(i == n) {
				n = 0;
			}
			
		}
		
		System.out.println(n);
		
	}
}

 

 

이번에는 알고리즘 스터디를 통해 배운 브루트-포스법을 통해 백준 문제 풀이를 해보았습니다!!

 

하나 하나씩 값들을 비교해가면서 찾아가는 방법인데 생각보다 속도가 빠르다고 하네요!

백준 문제 풀이에도 문제가 없어요!!

 

다른 문제들도 풀어볼게요~

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

 

728x90
반응형