728x90
1. 덩치(백준 7568번)
7568번: 덩치
우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩
www.acmicpc.net
▷ 풀이 코드
1. 이중 for문 사용import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Dungchi { public static void main(String args[]){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n][2]; for(int i=0; i<n; i++) { arr[i][0] = sc.nextInt(); arr[i][1] = sc.nextInt(); } for(int i=0; i<n; i++) { int rank = 1; for(int j=0; j<n; j++) { if(i == j) continue; if(arr[i][0] < arr[j][0] && arr[i][1] < arr[j][1]) { rank++; } } System.out.print(rank + " "); } } }
2. 내부 class 사용import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Dungchi2 { public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); List<Info> inputList = new ArrayList<>(); for(int i=0; i<n; i++) { String inputArr[] = br.readLine().split(" "); int x = Integer.parseInt(inputArr[0]); int y = Integer.parseInt(inputArr[1]); Info info = new Info(x, y); inputList.add(info); } // Info 객체들의 x와 y 값을 비교하고 출력 for(Info info : inputList) { int rank = 1; for(Info info2 : inputList) { if(info == info2) continue; if(info.getX() < info2.getX() && info.getY() < info2.getY()) { rank++; } } System.out.print(rank + " "); } } static class Info { int x; // 몸무게 int y; // 키 Info(int x, int y){ this.x = x; this.y = y; } int getX() { return x; } void setX(int x) { this.x = x; } int getY() { return y; } void setY(int y) { this.y = y; } } }
2. 체스판 다시 칠하기(백준 1018번)
1018번: 체스판 다시 칠하기 (acmicpc.net)
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
▷ 풀이 코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Main { public static boolean[][] arr; public static int min = 64; public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); String inputArr[] = br.readLine().split(" "); int n = Integer.parseInt(inputArr[0]); int m = Integer.parseInt(inputArr[1]); arr = new boolean[n][m]; for(int i=0; i<n; i++) { String input = br.readLine(); for (int j = 0; j < m; j++) { if (input.charAt(j) == 'W') { arr[i][j] = true; // W일 때는 true } else { arr[i][j] = false; // B일 때는 false } } } for (int i = 0; i < n-7; i++) { for (int j = 0; j < m-7; j++) { min = find(i, j); } } System.out.println(min); } static int find(int x, int y) { int cnt = 0; boolean tf = arr[x][y]; // 첫 번째 칸의 색 for (int i = x; i < x+8; i++) { for (int j = y; j < y+8; j++) { if (arr[i][j] != tf) { cnt++; } tf = !tf; } tf = !tf; } cnt = Math.min(cnt, 64 - cnt); return Math.min(min, cnt); } }
이번에는 알고리즘 스터디에서 공부했던 브루트포스 탐색을 통해 백준 문제 풀이를 해보았습니다!!
브루트포스는 모든 경우의 수를 반복하는 것인데요
문제를 풀 때 우선 모든 경우의 수를 파악하는 것이 중요하겠어요!
더 다양한 문제들을 풀어보면서 문제 풀이 방법들에 대해서 익혀볼게요~
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~

728x90
'문제풀기 > 백준 문제풀이' 카테고리의 다른 글
[알고리즘] 이분 탐색 문제 풀이(백준 2805번, 1654번, 2512번) (0) | 2023.08.24 |
---|---|
[알고리즘] 문자열 문제 풀이(백준 1316번, 1157번, 11721번, 1541번) (0) | 2023.08.18 |
[알고리즘] 해시맵 문제 풀이(백준 10815번, 14425번) (0) | 2023.08.18 |
[알고리즘] 데크 문제 풀이(백준 10866번) (2) | 2023.08.10 |
[알고리즘] 큐 문제 풀이(백준 10845번, 1158번, 1966번) (2) | 2023.08.10 |