https://www.acmicpc.net/problem/3003

import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] chess = new int[6];
int[] myChess = new int[6];
chess[0] = 1; // 킹(1개)
chess[1] = 1; // 퀸(1개)
chess[2] = 2; // 룩(2개)
chess[3] = 2; // 비숍(2개)
chess[4] = 2; // 나이트(2개)
chess[5] = 8; // 폰(8개)
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; i < 6; i++){
myChess[i] = Integer.parseInt(st.nextToken());
if(chess[i] != myChess[i]){
myChess[i] = chess[i] - myChess[i];
} else {
myChess[i] = 0;
}
}
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 6; i++){
sb.append(myChess[i]).append(" ");
}
System.out.println(sb);
}
}
나름 생각한 대로 잘 풀리고, 답안도 맞길래 잘 썼나 싶었음
하지만 명심할 것. 지금 내가 깊은 생각 없이 술술 써지는 코드라면 어디선가 낭비가 심한 코드임을..
한 번에 맞았길래 지교수님께 당당히 답안지 들고 갔다가
뒤통수 대차게 얻어맞음
지교수님께 피드백 받은 버전
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] chess = {1, 1, 2, 2, 2, 8};
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 6; i++){
int myChess = Integer.parseInt(st.nextToken());
sb.append(chess[i] - myChess).append(" ");
}
System.out.println(sb);
}
}
1. 생각없이 맨날 배열 생성할 때 new 키워드만 믿고 그대로 사용했는데
문제처럼 배열 값들을 다 줬을 땐 훨씬 간단하게 생성할 수 있던걸 잊고 있었다.. 벌써 저기서 코드 6줄 생략
2. 그리고 코드 한 번만 다시 검토해도 알 수 있었을 텐데, 보면 if문이 필요가 없음.
개수가 맞건, 틀리건 출력하는 건 그 차잇값이라서 if문 없이 chess[i]에서 가지고 있는 개수 빼주면 됨
3. 사실 myChess[i] 배열은 없어도 됨.
입력받자마자 차잇값 계산한 뒤에 그 값을 Stringbuilder에 넣어주면 메모리 낭비 줄여서 코드 작성 가능.. 위 2개는 코드 다시 보면 알 수 있었을 텐데 이건 바로 생각 못했을 듯.
+

아니근데 받은 충격(?)에 비해 메모리 차이가 너무 미미해서 민망..
문제가 너무 간단해서 그런가 봐요 하하하..
'Java' 카테고리의 다른 글
| [백준] 코딩 테스트 문제 10988: 팰린드롬인지 확인하기 (0) | 2026.02.24 |
|---|---|
| [백준] 코딩테스트 문제 2444: 별 찍기 - 7 (0) | 2026.02.24 |
| [백준] 코딩 테스트 문제 25083: 새싹 (0) | 2026.02.24 |
| [백준] 코딩테스트 문제 2675: 문자열 반복 (0) | 2026.02.23 |
| [백준] 코딩테스트 문제 10809: 알파벳 찾기 (0) | 2026.02.23 |