백준 baseball game

재피터노트북·2022년 9월 28일
0
post-thumbnail

백준 baseball game

문제

문제 풀이 방법

처음에 이문제를 보고 엄청 당황했었다. 이문제는 어떻게 풀어가야하지라는 생각부터 했었다. 이문제를 풀려면 일단 먼저 현실에서 baseball game을 한번 해보는 걸 추천함..ㅠㅠ 1부터 9까지의 3자리의 숫자중에 답을 불렀을때 그에 해당하는 자리와 숫자가 맞으면 스트라이크 아니면 ball이렇게 말해준다. 이 코드는 다소 복잡해 보일수 있는데 알면 너무 쉬운 문제이다.

    1. 입력값의 둘째줄의 첫번째 입력값부터 3번째 입력값까지 for문으로 arr배열에 저장.
    1. 3중 for문을 만들어서 1 ~ 999 까지의 모든경우를 보는거다.
    1. 그리고 i j k가 서로 같지 않을때를 조건으로 걸어준다(ex) 111, 222, 333, 444)
    1. 물어본 질문만큼 for문을 다시돌고 백의자리 십의자리 일의자리의 수를 구해준다.
    1. if문으로 스트라이크, 볼 여부를 확인후 질문 조건과 비교후 다 같다면 result를 1더해준다.

풀이 코드

import java.util.Scanner;
public class Main{
    public static void main(String[] args){

       // Please Enter Your Code Here
       Scanner s = new Scanner(System.in);
       int[][] arr = new int[105][3];
       int num = s.nextInt();
       int num2;
       int result = 0;
       
       for (int i=0;i<num;i++){
         for (int j=0;j<3;j++){
           num2 = s.nextInt();
           arr[i][j] = num2;
         }
       }
       
       int first, second, third;
       int cnt;
       for (int i=1;i<10;i++){
         for (int j=1;j<10;j++){
           for (int k=1;k<10;k++){
             if (i != j && j != k && i != k){
               cnt = 0;
               for (int l=0;l<num;l++){
                 
                 first = arr[l][0] / 100;
                 second = (arr[l][0] / 10) % 10;
                 third = arr[l][0] % 10;
                 
                 int strike = 0, ball = 0;
                 
                 if (first == i) strike++;
                 if (second == j) strike++;
                 if (third == k) strike++;
                 
                 // i j k
                 // first second third
                 if (i == second || i == third) ball++;
                 if (j == first || j == third) ball++;
                 if (k == first || k == second) ball++;
                 
                 if (arr[l][1] != strike || arr[l][2] != ball) cnt++;
               }
               if (cnt == 0) result++;
               
             }
           }
         }
       }
       System.out.println(result);
    }
}
profile
난 이 재 선

0개의 댓글