# 문제
# 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
public class BOJ3003_v1 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] input = br.readLine().split("\\s+");
int[] chessInput = new int[6]; // 체스는 6종류로 구성
ArrayList<Integer> chess = new ArrayList<>();
int diff = 0;
// 체스 기본값: 킹 1, 퀸 1, 룩 2, 비숏 2, 나이트 2, 폰 8
chess.add(0, 1);
chess.add(1, 1);
chess.add(2, 2);
chess.add(3, 2);
chess.add(4, 2);
chess.add(5, 8);
// input값 chessInput에 담고 chess와 비교하는 계산
for (int i = 0; i < chessInput.length; i++) {
// chessInput에 input값 담기
chessInput[i] = Integer.parseInt(input[i]);
// chessInput과 chess 비교
diff = chess.get(i) - chessInput[i];
bw.write(diff + " "); // 데이터 임시 저장
}
bw.flush(); // 데이터 출력과 비우기
bw.close(); // 종료
br.close(); // 종료
}
}
# 입/출력 결과
# 과정
- 입력은 BufferedReader 클래스 사용
- String[] input에 입력값을 공백 기준으로 나누어 저장
- int[] chessInput을 크기 6으로 생성
- ArrayList<Integer> chess 생성
- 차이 계산을 위해 int diff = 0; 선언과 초기화
- chess에 .add() 메서드를 사용하여 킹, 퀸, 록, 비숏, 나이트, 폰 값을 순차적으로 저장
- for문 계산
- : chessInput.length 만큼 반복하여 chessInput에 input 요소들 저장
- : diff에 chess.get(i) - chessInput[i] 값을 담기
- : bw.wirte(diff) 사용하여 데이터 임시 저장
- bw.flush()로 데이터 출력과 비우기
- bw와 br .close() 해주기
# 메모
- 마지막에 출력을 할 때, bw가 출력을 하지 않아서 왜 그런가 싶었는데 BufferedWriter.write()는 문자 하나를 출력하는 메서드라서 int값이 들어가면 숫자 값이 아니라 아스키코드처럼 문자로 해석해서 출력한다고 한다. (chat-gpt 검색)
- 그래서 String.valueOf()를 사용하여 문자열로 변환해주던가 뒤에 + "" 를 붙여 문자열로 바꾸어줘야한다고 했다.
- System.out.println() 으로 출력하였을 경우에는 출력이 잘 되길래 도대체 어느 부분이 잘못된 것인지 몰랐는데 chat-gpt를 통해 알게되었다.
'코딩 테스트' 카테고리의 다른 글
[코딩테스트] 백준 10988번: 팰린드롬인지 확인하기 (0) | 2025.06.17 |
---|---|
[코딩테스트] 백준 2444번: 별 찍기 - 7 (0) | 2025.06.16 |
[코딩테스트] 백준 25083번: 새싹 (0) | 2025.06.16 |
[코딩테스트] 백준 11718번: 그대로 출력하기 (0) | 2025.06.15 |
[코딩테스트] 백준 5622번: 다이얼 (0) | 2025.06.15 |