📖 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 풀이 방식
• 구현, 문자열
1. 문자열 배열 board를 돌며 O 갯수와 X 갯수를 구한다.
2. 규칙을 위반하는지 검사한다.
1) X 갯수가 O 갯수보다 많을 수 없으므로 규칙 위반
2) O 갯수 > X 갯수 + 1 일 수 없으므로 규칙 위반
3) O로 빙고가 완성되었을 때 O 갯수 = X 갯수면 규칙 위반 (끝났는데 종료되지 않았기 때문)
4) X로 빙고가 완성되었을 때 O 갯수 = X 갯수 + 1이면 규칙 위반 (끝났는데 종료되지 않았기 때문)
🔺 코드
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
|
import java.util.*;
class Solution {
static String[] board;
public int solution(String[] board) {
this.board = board;
int oCnt = 0;
int xCnt = 0;
for(int i = 0 ; i < 3 ; i++) {
for(int j = 0 ; j < 3 ; j++) {
if(board[i].charAt(j) == 'O') oCnt++;
else if(board[i].charAt(j) == 'X') xCnt++;
}
}
// X 갯수가 O 갯수보다 많으면 안 됨
if(xCnt > oCnt) return 0;
// O 갯수가 X 갯수+1보다 더 크면 안 됨
if(oCnt > xCnt + 1) return 0;
// O가 완성되었을 때, O 갯수 == X 갯수면 안 됨
if(bingo('O')) {
if(oCnt == xCnt)
return 0;
}
// X가 완성되었을 때, O가 X보다 1개 많으면 안 됨
if(bingo('X')) {
if(oCnt == xCnt + 1)
return 0;
}
return 1;
}
private static boolean bingo(char c) {
// 가로 검사
for(int i = 0 ; i < 3 ; i++) {
if(board[i].charAt(0) == c && board[i].charAt(1) == c && board[i].charAt(2) == c)
return true;
}
// 세로 검사
for(int i = 0 ; i < 3 ; i++) {
if(board[0].charAt(i) == c && board[1].charAt(i) == c && board[2].charAt(i) == c)
return true;
}
// \ 검사
if(board[0].charAt(0) == c && board[1].charAt(1) == c && board[2].charAt(2) == c)
return true;
// / 검사
if(board[0].charAt(2) == c && board[1].charAt(1) == c && board[2].charAt(0) == c)
return true;
return false;
}
}
|
cs |
💦 어려웠던 점
- 며칠 전 본 틱택토 문제인데 또 시간 내에 문제 해결 아이디어를 생각하지 못 했다,,
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
✔ 풀이 참고
[JAVA/자바][프로그래머스 160585] 혼자서 하는 틱택토
문제 160585번 : 혼자서 하는 틱택토 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매
hojunking.tistory.com
✔ 며칠 전 푼 백준 7682 틱택토 문제와 굉장히 유사하다. 근데 이 풀이가 훨씬 이해하고 구현하기 쉬운 듯
[백준/JAVA] 7682번: 틱택토
📖 문제 7682번: 틱택토 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 줄은 9개의 문자를 포함하며, 'X', 'O', '.' 중 하나이다. '.'은 빈칸을 의미하며, 9개의 문자는 게임판에서 제일 윗 줄
bono039.tistory.com
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level3] 거스름돈 (JAVA) (0) | 2024.03.16 |
---|---|
[프로그래머스/Level2] 테이블 해시 함수 (JAVA) (0) | 2024.03.16 |
[프로그래머스/Level2] 두 원 사이의 정수 쌍 (JAVA) (0) | 2024.03.13 |
[프로그래머스/Level2] 점 찍기 (JAVA) (0) | 2024.03.13 |
[프로그래머스/Level2] 디펜스 게임 (JAVA) (0) | 2024.03.11 |