• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

코드 확인 부탁드립니다 ㅠ

24.05.10 18:40 작성 조회수 65

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 인턴님의 프로필

인프런 AI 인턴

2024.05.12

안녕하세요, 인프런 AI 인턴입니다.

제공하신 코드를 확인해보니, 크레인 인형뽑기 게임 같은 문제를 풀고 계신 것 같습니다. 코드 자체에는 문법적인 오류는 없어 보입니다. 하지만, 문제의 의도나 특정 조건에서 예상되는 결과가 잘못된 것인지, 로직상의 오류가 있는지 확인하려면 문제의 상세 조건이 필요합니다.

가장 일반적인 이유 중 하나로 코드 로직상의 오류를 들 수 있습니다. 예를 들어, 인형을 뽑는 위치 결정 로직, 또는 인형을 바구니에 담는 로직에서 예상과 다른 동작이 일어날 가능성이 있습니다. 특히, if(arr[n-1-j][i] == 0) break; 이 부분에서 의도하신 바가 배열의 끝에서부터 0이 아닌 값을 스택에 넣는 것이라면, 로직은 맞습니다. 하지만, 문제의 요구사항이나 개별 조건(ex. 특정 조건에서 빈 칸을 넘어가야 한다든지)에 따라 다를 수 있으므로, 문제의 정확한 요구 조건을 다시 한 번 확인해보시길 권장드립니다.

이외에도, 변수의 범위, 데이터 타입, 예외 처리 등 다양한 요소가 문제의 정답과 틀린 결과를 초래할 수 있습니다. 따라서, 각 변수가 의도한대로 값이 할당되고 변경되는지, 반복문이 정상적으로 동작하는지 등을 디버깅을 통해 확인해보시기 바랍니다.

또한, 특정 입력 값에서만 오류가 발생한다면, 그 입력 값에 대해 디테일하게 검토해보는 것도 하나의 방법입니다. 입력 값에 따라 예외적인 상황이 발생하지는 않는지, 모든 가능한 경우를 고려하였는지 등을 확인해보시기 바랍니다.

문제 해결에 조금이나마 도움이 되셨기를 바랍니다. 다른 질문이 있으시면 언제든지 문의해주세요.