체스를 할때 원래 필요한 피스의 개수를 미리 배열에 넣어주고 입력 받은 킹, 퀸, 룩, 비숍, 나이트, 폰의 피스의 개수를 빼주면 되는 문제다.
split() 이용
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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};
String[] chCnt = br.readLine().split(" ");
StringBuilder sb = new StringBuilder();
for(int i=0; i<chess.length; i++) {
sb.append(chess[i] - Integer.parseInt(chCnt[i])).append(" ");
}
System.out.println(sb);
}
}
입력받은 숫자를 split 으로 쪼개 새로운 배열에 넣어주고 반복문을 돌려 킹은 킹끼리, 퀸은 퀸끼리... 폰은 폰끼리 빼서 출력해주면 된다.
StringTokenizer 이용
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
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<chess.length; i++) {
sb.append(chess[i] - Integer.parseInt(st.nextToken())).append(" ");
}
System.out.println(sb);
}
}
새로운 배열을 만들지 않기 때문에 메모리를 조금 덜 차지하면서 풀 수 있었다.
다른 블로그 풀이들을 참고하니 킹부터 폰까지의 개수가 몇개 안되다보니 일일이 int king=1, int queen=1.... int pawn=8 이렇게 초기화 해줬는데 배열을 사용하지 않아 메모리는 훨씬 덜 사용하나 효율적이지 못하다는 생각이 들었다.
'알고리즘 풀이' 카테고리의 다른 글
[백준] 10988번: 팰린드롬인지 확인하기 - java 풀이 / 주소값 비교(==) 와 대상 값 비교(equals) (0) | 2023.06.22 |
---|---|
[백준] 2444번: 별 찍기 - 7 - java 풀이 (0) | 2023.06.21 |
[백준] 2908번: 상수 - java 풀이 (0) | 2023.06.21 |
[백준] 2675번: 문자열 반복 - java 풀이 (0) | 2023.06.19 |
[백준] 9086번: 문자열 - java 풀이 (0) | 2023.06.19 |