Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- heap
- 카카오코딩테스트
- 백준 1924번
- 카카오코테
- 알고리즘
- 자바
- 백준 1924번 java
- 객체프로그래밍이란
- 문자열포맷
- Java heap
- 백준
- 카카오1차
- 코테준비
- 힙정렬자바
- 자바문자열
- 자료구조힙
- heap정렬
- 자료구조 트리
- 개발상식
- 프로그래머스
- 카카오기출
- 프렌즈4블록java
- 프렌즈4블록
- 객체프로그래밍
- java
- 백준 1000번 java
- 백준 1000번
- 코딩테스트기출
- java method
- 공부정리
Archives
- Today
- Total
일단 시작해보는 블로그
[알고리즘_풀이] 프로그래머스 - 숫자 야구 java 본문
https://programmers.co.kr/learn/courses/30/lessons/42841
import java.util.*;
class Solution {
static int solution(int[][] baseball) {
int[] tmp = new int[3];
// 가능한 모든 경우의 수를 stack에 넣는다.
Stack<String> stack = new Stack<>();
for(int i=1; i<=9; i++) {
for(int j=1; j<=9; j++) {
for(int k=1; k<=9; k++) {
if(i!=j && j!=k && i!=k) {
stack.add(String.valueOf(i*100 + j*10 + k));
}
}
}
}
// 맞는 경우의 수를 넣어줄 answerList 선언
Stack<String> answerList = new Stack<>();
// 조건의 개수는 baseball.length
// 조건이 하나라도 안맞는 경우 flag를 통해서 걸러낸다.
while(!stack.isEmpty()) {
String out = stack.pop();
boolean flag = false;
for(int i=0; i<baseball.length; i++) {
int strike = strike(out, String.valueOf(baseball[i][0]));
int ball = ball(out, String.valueOf(baseball[i][0])) - strike;
if(strike != baseball[i][1] || ball != baseball[i][2]) {
flag = true;
break;
}
}
if(flag == false) {
answerList.add(out);
}
}
return answerList.size();
}
static int strike(String n1, String n2) {
int rtn = 0;
for(int i=0; i<3; i++) {
if(n1.charAt(i) == n2.charAt(i)) {
rtn++;
}
}
return rtn;
}
static int ball(String n1, String n2) {
int rtn = 0;
List<Character> tmp = new ArrayList<>();
for(int i=0; i<3; i++) {
tmp.add(n2.charAt(i));
}
for(int i=0; i<3; i++) {
if(tmp.contains(n1.charAt(i))) {
rtn++;
}
}
return rtn;
}
}
완전탐색 문제인데, 알고리즘 먼저 생각하고 접근해서 풀다가 지쳐서 구글링해서 참고했다ㅠㅠ
뭔가.... 이렇게 다 해보는 방식일줄 몰랐는데 문제 많이 풀어보고 적응해야겠다.
참고
'CS > 알고리즘 풀이' 카테고리의 다른 글
[알고리즘_풀이] 백준 - 토마토 java (0) | 2020.03.11 |
---|---|
[알고리즘_풀이] 프로그래머스 - 최솟값 만들기 java (0) | 2020.03.11 |
[알고리즘_풀이] 프로그래머스 - 네트워크 java (0) | 2020.03.11 |
[알고리즘_풀이] 프로그래머스 - 단어변환 java (0) | 2020.03.11 |
[알고리즘_풀이] 프로그래머스 등굣길 java (0) | 2020.03.06 |
Comments