인프런 커뮤니티 질문&답변

모깅님의 프로필 이미지
모깅

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

3. 크레인 인형뽑기

코드 확인 부탁드립니다 ㅠ

작성

·

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. 특정 조건에서 빈 칸을 넘어가야 한다든지)에 따라 다를 수 있으므로, 문제의 정확한 요구 조건을 다시 한 번 확인해보시길 권장드립니다.

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

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

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

모깅님의 프로필 이미지
모깅

작성한 질문수

질문하기