문제
https://school.programmers.co.kr/learn/courses/30/lessons/160585?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
class Solution {
// 문자 a 기준으로 연속 3개가 이루어졌는지 확인하는 함수
public boolean check(String[] board, char a){
for(int i=0; i<3; i++){
if(board[i].charAt(0)==a && board[i].charAt(1)==a && board[i].charAt(2)==a) return true;
if(board[0].charAt(i)==a && board[1].charAt(i)==a && board[2].charAt(i)==a) return true;
}
if (board[0].charAt(0)==a && board[1].charAt(1)==a && board[2].charAt(2)==a) return true;
if (board[0].charAt(2)==a && board[1].charAt(1)==a && board[2].charAt(0)==a) return true;
return false;
}
// 문자 a가 몇개 존재하는지 확인하는 함수
public int count(String[] board, char a){
int temp=0;
for(int i=0; i<3; i++){
for (int j=0; j<3; j++){
if(board[i].charAt(j)==a){
temp++;
}
}
}
return temp;
}
public int solution(String[] board) {
// O, X 둘 다 연속 3개가 되는 경우
if(check(board,'O')&&check(board,'X')) return 0;
// X의 개수가 더 많은 경우
if(count(board,'O')<count(board,'X')) return 0;
// O의 개수가 X의 개수보다 2개이상 많은 경우
if(count(board,'O')>count(board,'X')+1) return 0;
// O가 이겼을때, O의 개수가 X의 개수보다 하나 더 크지 않은 경우
if(check(board,'O')&&!check(board,'X')){
if(count(board,'O')!=(count(board,'X')+1)) return 0;
}
// X가 이겼을때, O의 개수와 X의 개수가 다른 경우
if(!check(board,'O')&&check(board,'X')){
if(count(board,'O')!=count(board,'X')) return 0;
}
return 1;
}
}
'문제풀이 > 구현' 카테고리의 다른 글
[JAVA] [구현] 포탑 부수기 (0) | 2023.07.03 |
---|---|
[JAVA] [구현] 백준 15898 피아의 아틀리에 (0) | 2023.06.30 |
[파이썬] [구현] 백준 2852 NBA 농구 (0) | 2023.05.08 |
[파이썬] [구현] 백준 20164 홀수 홀릭 호석 (0) | 2023.05.08 |
[파이썬] [구현] 백준 17281 야구 (0) | 2023.04.10 |