강의

멘토링

커뮤니티

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

tjrwls08088님의 프로필 이미지
tjrwls08088

작성한 질문수

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

가위바위보 문제에서 각각의 정수형 배열에 숫자 입력할때 에러 질문입니다.

작성

·

333

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
 
안녕하세요.
 
가위바위보 문제를 풀다가 A,B 인원의 가위바위보 정보를 입력받는 부분을 어디에 두냐에 따라 컴파일 에러가 나거나 안나거나해서
원인이 궁금하여 이렇게 질문드립니다.

 

import java.util.Scanner;

public class RSP {

	static Scanner sc = new Scanner(System.in);

	public char[] Solution(int num, int[] A, int[] B) {

		for (int i = 0; i < num; i++) {
			A[i] = sc.nextInt();
		}

		for (int i = 0; i < num; i++) {
			B[i] = sc.nextInt();
		}

		char[] answer = new char[num];

		for (int i = 0; i < num; i++) {
			if (A[i] == B[i]) {
				answer[i] = 'D';
			} else if (A[i] == 1) {
				if (B[i] == 2) {
					answer[i] = 'B';
				}
				if (B[i] == 3) {
					answer[i] = 'A';
				}
			} else if (A[i] == 2) {
				if (B[i] == 1) {
					answer[i] = 'A';
				}
				if (B[i] == 3) {
					answer[i] = 'B';
				}
			} else if (A[i] == 3) {
				if (B[i] == 1) {
					answer[i] = 'B';
				}
				if (B[i] == 2) {
					answer[i] = 'A';
				}
			}
		}

		System.out.print(answer);
		return answer;
	}

	public static void main(String[] args) {

		RSP main = new RSP();
		Scanner sc = new Scanner(System.in);

		System.out.print("입력: ");
		int num = sc.nextInt();

		int[] A = new int[num];
		int[] B = new int[num];

		for (char c : main.Solution(num, A, B)) {
			System.out.println(c);
		}
	}

}

 

 

위와 같이 Solution 메소드 안에 A,B의 가위바위보 정보를 입력받을때는 컴파일 에러가 납니다. (문제의 입력 사항을 한꺼번에 복사해서 넣었을경우에 에러가 남. 직접 하나하나 손으로 키보드로 입력하면 에러가 안납니다.)

 

package Array;

import java.util.Scanner;

public class RSP {
	
	static Scanner sc = new Scanner(System.in);

	
	public char[] Solution(int num, int[] A, int[] B) {

		char[] answer = new char[num];
		
		for(int i = 0; i<num; i++) {
			if(A[i] == B[i]) {
				answer[i] = 'D';
			}
			else if(A[i] == 1) {
				if(B[i] == 2) {
					answer[i] = 'B';
				}
				if(B[i] == 3) {
					answer[i] = 'A';
				}
			}
			else if(A[i] == 2) {
				if(B[i] == 1) {
					answer[i] = 'A';
				}
				if(B[i] == 3) {
					answer[i] = 'B';
				}
			}
			else if(A[i] == 3) {
				if(B[i] == 1) {
					answer[i] = 'B';
				}
				if(B[i] == 2) {
					answer[i] = 'A';
				}
			}
		}
		
		System.out.print(answer); 
		return answer;
	}

	public static void main(String[] args) {

		RSP main = new RSP();
		Scanner sc = new Scanner(System.in);
		
		System.out.print("입력: ");
		int num = sc.nextInt();
		
		int[] A = new int[num];
		int[] B = new int[num];
		
		for(int i = 0; i<num; i++) {
			A[i] = sc.nextInt();
		}
		
		for(int i = 0; i<num; i++) {
			B[i] = sc.nextInt();
		}
		
		for(char c : main.Solution(num, A, B)) {
			System.out.println(c);
		}
	}

}

 

하지만 이렇게 main 메소드 안에 A, B의 가위바위보 정보를 입력받도록 하는 메소드를 진행했을때에는 에러가 나지 않습니다. 

(한꺼번에 입력결과를 입력해도 에러 안남) 

이유가 궁금합니다 ㅠㅠ

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

제 컴퓨터에서는 위에 코드 solution에서 입력받은 코드 컴파일에러 안뜨고 정상실행되고, 키보드로 입력해보니 잘 입력됩니다.

tjrwls08088님의 프로필 이미지
tjrwls08088

작성한 질문수

질문하기