티스토리 뷰

반응형

 

문제

A, B 두 사람이 가위바위보 게임을 합니다.

총 N번의 게임을 하여 A가 이기면 A를 출력하고, B가 이기면 B를 출력합니다.

비길 경우에는 D를 출력합니다.

가위, 바위, 보의 정보는 1:가위, 2:바위, 3:보로 정하겠습니다.

예를 들어 N=5이면

두 사람의 각 회의 가위, 바위, 보 정보가 주어지면 각 회를 누가 이겼는지 출력하는 프로그램을 작성하세요.

 

입력

첫 번째 줄에 게임 횟수인 자연수 N(1<=N<=100)이 주어집니다.

두 번째 줄에는 A가 낸 가위, 바위, 보 정보가 N개 주어집니다.

세 번째 줄에는 B가 낸 가위, 바위, 보 정보가 N개 주어집니다.

 

출력

각 줄에 각 회의 승자를 출력합니다. 비겼을 경우는 D를 출력합니다.

 

 

 

예시 입력

5
2 3 3 1 3
1 1 2 2 3

예시 출력

A
B
A
B
D

 

 

 

 

 

문제 풀이

 

[첫번째 풀이]

import java.util.Scanner;
  
public class Main {
  public String solution(int a, int b) {
    int x = a - b;

    if (x == 0) {
      return "D";
    }

    if (Math.abs(x) == 2) {
      if (x < 0) {
        return "A";
      } else {
        return "B";
      }
    }

    if (x > 0) {
      return"A";
    } else {
      return "B";
    }
  }
  
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    int count = Integer.parseInt(scanner.nextLine());
    String[] a = scanner.nextLine().split(" ");
    String[] b = scanner.nextLine().split(" ");

    Main main = new Main();

    for (int i=0; i<count; i++) {
      System.out.println(main.solution(Integer.parseInt(a[i]), Integer.parseInt(b[i])));
    }
  }
}

(Time 156ms / Memory 27MB)

 

[두번째 풀이]

import java.util.Scanner;

public class Main {
    public void solution(int c, int[] a, int[] b) {
        for (int i=0; i<c; i++) {
            if (a[i] == b[i]) {
                System.out.println("D");
            }

            if ((a[i] == 3 && b[i] == 2) || (a[i] == 2 && b[i] == 1) || (a[i] == 1 && b[i] == 3)) {
                System.out.println("A");
            } else if ((a[i] == 1 && b[i] == 2) || (a[i] == 2 && b[i] == 3) || (a[i] == 3 && b[i] == 1)) {
                System.out.println("B");
            }
        }
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int count = scanner.nextInt();
        int[] a = new int[count];
        int[] b = new int[count];

        for (int i=0; i<count; i++) {
            a[i] = scanner.nextInt();
        }
        for (int i=0; i<count; i++) {
            b[i] = scanner.nextInt();
        }

        Main main = new Main();
        main.solution(count, a, b);
    }
}

(Time 167ms / Memory 27MB)

 

 

 

- A의 값에서 B를 뺀 후, 값이 0이면 "D", 뺀 값이 0이 아닌데 뺀 값의 절대값이 2이면 마이너스일 때 "A", 아니면 "B", 절대값이 2가 아니면 플러스일 때 "A", 아니면 "B"

- 두번째 풀이는 문제 풀이 영상을 보고 뺀 값을 이용하지 않고 if 문으로 정답을 출력하도록 작성해봤다. 내가 짠 게 더 나은듯

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함