작성
·
113
0
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] arr = new int[n][n];
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
arr[i][j] = sc.nextInt();
}
}
int m = sc.nextInt();
int[] moves = new int[m];
for(int i = 0; i < m; i++){
moves[i] = sc.nextInt();
}
ArrayList<Stack<Integer>> board = new ArrayList<>();
for(int i = 0; i < n; i++) {
Stack<Integer> temp = new Stack<>();
for(int j = 0; j < n; j++) {
if(arr[n-1-j][i] == 0) break;
temp.push(arr[n-1-j][i]);
}
board.add(temp);
}
Stack<Integer> basket = new Stack<>();
int result = 0;
for(int i = 0; i < m; i++) {
int num = moves[i]-1;
Stack<Integer> stack = board.get(num);
if(stack.empty()) continue;
int popNum = stack.pop();
if(!basket.isEmpty() && basket.peek() == popNum) {
basket.pop();
result += 2;
} else {
basket.push(popNum);
}
}
System.out.print(result);
}
}
어느 부분에서 틀린지 모르겠습니다. 확인 해주시면 감사하겠습니다.ㅠㅠ
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
제공하신 코드를 확인해보니, 크레인 인형뽑기 게임 같은 문제를 풀고 계신 것 같습니다. 코드 자체에는 문법적인 오류는 없어 보입니다. 하지만, 문제의 의도나 특정 조건에서 예상되는 결과가 잘못된 것인지, 로직상의 오류가 있는지 확인하려면 문제의 상세 조건이 필요합니다.
가장 일반적인 이유 중 하나로 코드 로직상의 오류를 들 수 있습니다. 예를 들어, 인형을 뽑는 위치 결정 로직, 또는 인형을 바구니에 담는 로직에서 예상과 다른 동작이 일어날 가능성이 있습니다. 특히, if(arr[n-1-j][i] == 0) break;
이 부분에서 의도하신 바가 배열의 끝에서부터 0이 아닌 값을 스택에 넣는 것이라면, 로직은 맞습니다. 하지만, 문제의 요구사항이나 개별 조건(ex. 특정 조건에서 빈 칸을 넘어가야 한다든지)에 따라 다를 수 있으므로, 문제의 정확한 요구 조건을 다시 한 번 확인해보시길 권장드립니다.
이외에도, 변수의 범위, 데이터 타입, 예외 처리 등 다양한 요소가 문제의 정답과 틀린 결과를 초래할 수 있습니다. 따라서, 각 변수가 의도한대로 값이 할당되고 변경되는지, 반복문이 정상적으로 동작하는지 등을 디버깅을 통해 확인해보시기 바랍니다.
또한, 특정 입력 값에서만 오류가 발생한다면, 그 입력 값에 대해 디테일하게 검토해보는 것도 하나의 방법입니다. 입력 값에 따라 예외적인 상황이 발생하지는 않는지, 모든 가능한 경우를 고려하였는지 등을 확인해보시기 바랍니다.
문제 해결에 조금이나마 도움이 되셨기를 바랍니다. 다른 질문이 있으시면 언제든지 문의해주세요.