프로그래머스: 숫자 야구
문제
https://programmers.co.kr/learn/courses/30/lessons/42841
코드
1 |
|
흐름
- 숫자 야구에서 나올 수 있는 모든 숫자를 구함(123~987)
- 구할 때 같은 숫자가 중복 될 수 없고 0이 들어갈 수 없으므로 확인해서 continue
- 구한 숫자들의 갯수만큼 돌면서 가능한 숫자인지 확인하는데
- 우선 나올 수 있는 모든 수 중 하나씩 돌면서 그 수와 배열로 받은 상대 수를 비교
- 받은 수와 뽑은 수를 한 자리씩 비교하면서 자리도 같고 숫자도 같으면 스트라이크
- 자리는 틀리지만 뽑은 수가 받은 수 안에 포함되어 있으면 볼로 처리
- 스트라이크이면서 볼인 경우는 있을 수 없기 때문에 볼에서 스트라이크의 갯수를 뻄
- 구한 스트라이크와 볼의 개수를 받은 수의 스트라이크와 볼 수와 비교해서 둘 중 하나도 같지 않으면 false를 저장하고 반복문을 빠져 나오고
- 조건에 맞다면 정답의 갯수를 증가 시킴
- 반복문이 끝나면 정답 갯수 return
- 끝
결과
번호 | 속도 |
---|---|
테스트 1 | 통과 (3.49ms, 52.4MB) |
테스트 2 | 통과 (4.55ms, 50.7MB) |
테스트 3 | 통과 (3.33ms, 52.6MB) |
테스트 4 | 통과 (3.48ms, 52MB) |
테스트 5 | 통과 (4.26ms, 50.4MB) |
테스트 6 | 통과 (4.69ms, 52.5MB) |
테스트 7 | 통과 (3.68ms, 50.8MB) |
테스트 8 | 통과 (4.35ms, 52.3MB) |
테스트 9 | 통과 (3.60ms, 52.7MB) |
테스트 10 | 통과 (3.33ms, 50.3MB) |
테스트 케이스
1 | assertEquals(2, test.solution(new int[][] {{123, 1, 1}, {356, 1, 0}, {327, 2, 0}, {489, 0, 1}})); |