-
간단한 문제 설명
1~9로 중복없는 세 자리 숫자와 스트라이트와 볼의 개수 정보들이 주어질 때, 가능한 세 자리 숫자의 경우의 수를 반환하는 문제. -
내 코드 설명
출처를 참고했다.
1~9로 중복없이 이루어진 세 자리 숫자는 123부터 987까지 가능하며 각 자리수가 서로 같지 않고, 0이 있으면 안된다.
123부터 987까지의 각 숫자가 주어진 정보와 맞는지 확인하는데, 각 숫자가 주어진 정보의 숫자의 자리와 해당 자리의 숫자가 맞으면 스트라이크에 1을 더하고, 자리는 맞지 않지만 해당 숫자가 있다면 볼에 1을 더한다.
예를들어 주어진 정보의 개수가 7개라면 123부터 987가지의 숫자 하나(tmp)와 7개 정보를 하나씩(base_tmp) 스트라이크와 볼의 개수를 확인하면서 tmp와 base_tmp 중 하나라도 스트라이크와 볼의 개수가 맞지 않는다면 flag에 false를 넣고 확인을 멈춘다.(for 반복문에서 break)
tmp가 모든 base_tmp의 스트라이크와 볼의 개수가 맞는 다면(flag가 true) 경우의 수에 1을 더한다.
이렇게 주어진 정보에 맞는 경우의 수를 구하고 개수를 반환한다.세 자리 숫자를 한 자리씩 확인하기 위해서 123와 같은 정수를 [1, 2, 3]으로 변환할 필요가 있다. 정수형을 정수형 배열로 만들기 위해 스트림을 사용했다.
int[] tmp = String.valueOf("123").chars().map( c -> c -= '0').toArray();
number_baseball
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||