[프로그래머스] 완전탐색 - 숫자 야구 (Java)
글 작성자: beaniejoy
프로그래머스 코딩테스트 연습 - 완전탐색 / 숫자 야구 (https://programmers.co.kr/learn/courses/30/lessons/42841)
어렸을적 친구들과 많이 해보았던 베이스볼 게임입니다. 완전탐색에 맞게 1 ~ 9 중 순서를 고려한 3개를 뽑는 순열 알고리즘이 필요합니다. 전에 완전탐색 - 소수찾기에서 사용했던 순열 알고리즘을 그대로 이용해서 코드를 구성해보았습니다.
check 메서드에서 baseball 2차원 integer 배열에 들어가 있는 질문한 숫자, 스트라이크의 수, 볼의 수와 일치하는지 아닌지에 따라 정답 후보를 담는 HashSet에 추가하도록 코드를 작성해보았습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
import java.util.HashSet;
import java.util.Set;
class Solution {
Set<Integer> rightSet = new HashSet<>();
private int[][] baseball;
public int solution(int[][] baseball) {
int answer = 0;
this.baseball = baseball;
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
perm(arr, 0, 3);
answer = rightSet.size();
return answer;
}
public void perm(int[] arr, int depth, int k) {
if (depth == k) {
returnNumber(arr, k);
return;
} else {
for (int i = depth; i < arr.length; i++) {
swap(arr, i, depth);
perm(arr, depth + 1, k);
swap(arr, i, depth);
}
}
}
public void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public void returnNumber(int[] arr, int k) {
int resultNumber = 0;
for (int i = 0; i < k; i++) {
resultNumber += arr[i] * Math.pow(10,k-1-i);
}
check(resultNumber);
}
private void check(int resultNumber) {
boolean isRight = true;
int strike = 0;
int ball = 0;
String numbToStr = Integer.toString(resultNumber);
for(int i = 0; i < baseball.length; i++){
String tryBall = Integer.toString(baseball[i][0]);
for(int j = 0; j < 3; j++){
char chr = tryBall.charAt(j);
if(chr == numbToStr.charAt(j)){
strike++;
} else{
if(numbToStr.contains(Character.toString(chr))){
ball++;
}
}
}
if(strike != baseball[i][1] || ball != baseball[i][2]){
isRight = false;
break;
}
strike = 0;
ball = 0;
}
if (isRight) {
rightSet.add(resultNumber);
}
}
}
|
'CS > Algorithm' 카테고리의 다른 글
[프로그래머스] Hash(해시) - 베스트앨범 (Java) (0) | 2020.03.27 |
---|---|
[프로그래머스] Hash(해시) - 전화번호 목록 (Java) (0) | 2020.02.21 |
[프로그래머스] DFS/BFS - 네트워크 (Java) (0) | 2020.02.21 |
[프로그래머스] 완전탐색 - 모의고사 (Java) (0) | 2020.02.20 |
[프로그래머스] 완전탐색 - 소수 찾기 (Java) (0) | 2020.02.20 |
댓글
댓글(Github)
다른 글
-
[프로그래머스] Hash(해시) - 전화번호 목록 (Java)
[프로그래머스] Hash(해시) - 전화번호 목록 (Java)
2020.02.21 -
[프로그래머스] DFS/BFS - 네트워크 (Java)
[프로그래머스] DFS/BFS - 네트워크 (Java)
2020.02.21 -
[프로그래머스] 완전탐색 - 모의고사 (Java)
[프로그래머스] 완전탐색 - 모의고사 (Java)
2020.02.20 -
[프로그래머스] 완전탐색 - 소수 찾기 (Java)
[프로그래머스] 완전탐색 - 소수 찾기 (Java)
2020.02.20