처음 작성한 코드 - 1차원 배열
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = new String[8];
int cnt = 0;
for (int i = 0; i < 8; i++) {
s[i] = sc.next();
}
for (int i = 0; i < 8; i++) {
if(i % 2 == 0) { //짝수 줄, 0 2 4 6, 흰 검 흰 ... 검
if(s[i].contains("F")) { //줄에 F 있는 경우에만 센다.
for (int j = 0; j < s[0].length(); j+=2) {
if(s[i].charAt(j) == 'F') {
cnt++;
}
}
}
}
else { //홀수 줄, 1 3 5 7, 검 흰 검 ... 흰
if(s[i].contains("F")) { //줄에 F 있는 경우에만 센다.
for (int j = 1; j < s[0].length(); j+=2) {
if(s[i].charAt(j) == 'F') {
cnt++;
}
}
}
}
}
System.out.println(cnt);
}
}
코드가 너무 중복되는 것 같아 조금 바꿔본다.
처음 작성한 코드 간결화
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = new String[8];
int cnt = 0;
for (int i = 0; i < 8; i++) {
s[i] = sc.next();
}
// 8x8 체스판을 돌며 'F'를 카운트
for (int i = 0; i < 8; i++) {
int startIdx = (i % 2 == 0) ? 0 : 1; // 짝수줄은 0부터, 홀수줄은 1부터 시작
for (int j = startIdx; j < s[i].length(); j += 2) {
if (s[i].charAt(j) == 'F') {
cnt++;
}
}
}
System.out.println(cnt);
}
}
성능에는 별 차이 없지만, 훨씬 짧아졌다.
2차원 배열 사용
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char[][] board = new char[8][8]; // 8x8 체스판
int cnt = 0;
for (int i = 0; i < 8; i++) {
board[i] = sc.next().toCharArray(); // 한 줄씩 입력을 받아서 char 배열로 저장
}
// 2차원 배열을 돌면서 하얀 칸 찾기
for (int i = 0; i < 8; i++) {
for (int j = (i % 2 == 0) ? 0 : 1; j < 8; j += 2) { // 짝수 행은 0부터, 홀수 행은 1부터
if (board[i][j] == 'F') {
cnt++;
}
}
}
System.out.println(cnt);
}
}
체스판이 8X8이기 때문에 2차원 배열을 사용해도 될 것 같아 적용해본 방식
'백준' 카테고리의 다른 글
[백준 1008] A/B JAVA - BigDecimal 사용 (2) | 2024.11.18 |
---|---|
[백준 11866] 요세푸스 문제 0 JAVA - 원형 Queue 사용 (1) | 2024.11.12 |
[백준 10988] 팰린드롬인지 확인하기 (0) | 2024.11.11 |
[백준 1157] 단어 공부 JAVA - LinkedHashSet, HashMap 사용 (2) | 2024.11.09 |
[백준 1316] 그룹 단어 체커 JAVA - 데크(Deque) 사용 (0) | 2024.11.08 |