Hi, There!
안녕하세요, 바오밥입니다.
목차
- 문제
- 풀이
문제
문제 내용
https://www.acmicpc.net/problem/2503
풀이
나의 풀이
- 브루트포스로 풀이하였다.
- 해당 문제는 단순 브루트포스 및 구현 문제였다. 아직 PS 문제 풀이 속도가 많이 느려 더 많은 문제들을 풀어봐야 할 것 같다.
- 앞으로는 PS 때 자바의 특성을 살려서 객체지향적으로 풀이하기로 했다.
- Hint 클래스를 만들고, ArrayList의 타입을 Hint 클래스로 지정해 풀이했다.
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.ArrayList;
public class Main {
static ArrayList<Hint> hints;
public static class Hint {
int number;
int strike;
int ball;
public Hint(int number, int strike, int ball) {
this.number = number;
this.strike = strike;
this.ball = ball;
}
}
public static void main(String []args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int loop = Integer.parseInt(br.readLine());
hints = new ArrayList<>();
for(int i=0; i<loop; i++) {
st = new StringTokenizer(br.readLine());
int input_number = Integer.parseInt(st.nextToken());
int input_strike = Integer.parseInt(st.nextToken());
int input_ball = Integer.parseInt(st.nextToken());
hints.add(new Hint(input_number, input_strike, input_ball));
}
int cnt = 0;
for(int i=123; i<=987; i++) {
int digit_100 = i/100;
int digit_10 = (i/10) - (digit_100*10);
int digit_1 = i%10;
if(digit_100 == 0 || digit_10 == 0 || digit_1 == 0 || digit_100 == digit_10 || digit_100 == digit_1 || digit_10 == digit_1) continue;
if(find(digit_100, digit_10, digit_1)) cnt++;
}
System.out.printf("%d", cnt);
}
public static boolean find(int digit_100, int digit_10, int digit_1) {
for(int i=0; i<hints.size(); i++) {
Hint hint = hints.get(i);
int hint_digit_100 = hint.number/100;
int hint_digit_10 = (hint.number/10) - (hint_digit_100*10);
int hint_digit_1 = hint.number%10;
int input_strike_count = 0;
int input_ball_count = 0;
if(hint_digit_100 == digit_100) input_strike_count++;
if(hint_digit_10 == digit_10) input_strike_count++;
if(hint_digit_1 == digit_1) input_strike_count++;
if(hint_digit_100 == digit_10 || hint_digit_100 == digit_1 ) input_ball_count++;
if(hint_digit_10 == digit_100 || hint_digit_10 == digit_1 ) input_ball_count++;
if(hint_digit_1 == digit_100 || hint_digit_1 == digit_10 ) input_ball_count++;
if(hint.strike != input_strike_count || hint.ball != input_ball_count) return false;
}
return true;
}
}
'Dev > PS' 카테고리의 다른 글
[백준-정수론] 15736 청기백기 (0) | 2023.09.29 |
---|---|
[백준-완전탐색] 1090 체커 (0) | 2023.09.29 |
[백준-완전탐색] 19532 수학은 비대면강의입니다 (0) | 2023.09.26 |
[백준-완전탐색] 14568 2017 연세대학교 프로그래밍 경시대회 (사탕) (0) | 2023.09.23 |
[백준-완전탐색] 1816 암호 키 (0) | 2023.09.23 |