병훈's Blog

SWEA - 1936. 1대1 가위바위보 (Python, Java, C++) 본문

Algorithm

SWEA - 1936. 1대1 가위바위보 (Python, Java, C++)

thdqudgns 2022. 12. 30. 01:19

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PjKXKALcDFAUq 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

(※ 로그인을 해야 볼 수 있을 겁니다.)


A와 B가 가위바위보를 하였다.

가위는 1, 바위는 2, 보는 3으로 표현되며 A B가 무엇을 냈는지 입력으로 주어진다.

A B중에 누가 이겼는지 판별해보자. 단, 비기는 경우는 없다.

 

[입력]

입력으로 A B가 무엇을 냈는지 빈 칸을 사이로 주어진다.

 
 

[출력]

A가 이기면 A, B가 이기면 B를 출력한다.


싸피 9기에 입과하기 전, 코테 연습 중이다.

그동안은 Python으로만 풀었는데, 이제 다른 언어로도 풀어볼 계획이다.

크크크 Python, Java, C++ 알고리즘을 정복하겠어!!

이렇게 풀어보니 좋은 점은

세 언어의 공통점과 차이점을 알 수 있다는 것이다.

 

메모리 적게 쓴 순위 )

C++    JAVA    Python

 

실행시간 적은 순위 )

C++    Python    JAVA

 

코드길이 적은 순위)

Python    C++    JAVA

 

하지만 자바공화국인 우리나라에서 1등인 언어는 JAVA

객체지향언어이고, 사용하기 편해서 그런 것이다.

 

  • 입출력은 Python, C++, Java 순서로 간편하다.
  • C++ 과 Java는 코드를 작성하는 방식이 유사하다.
  • 메모리, 실행시간에서는 C++ 이 압도적 1등

먼저, 이 문제는

 

1,2,3을 각각 가위, 바위, 보로 본다.

A와 B가 가위바위보를 한다.

비기는 경우는 없고, 이긴 사람을 출력하면 된다.

 

그렇다면 A와 B가 무엇을 냈는지 (무슨 수인지) 비교하기만 하면 된다.

 

바위는 가위를 이긴다. 2-1 = 1

보는 바위를 이긴다. 3-2 = 1

가위는 보를 이긴다. 1-3= -2

 

이것으로 코드를 작성했다.

 


<Python>

a, b = map(int, input().split())

if b-a == 1 or b-a == -2:
	print('B')
else:
	print('A')

 

  • 파이썬은 두 정수 a와 b를 map()을 이용하여 동시에 입력받을 수 있어 간편하다.
  • 코드의 마지막에 세미콜론 ; 을 사용하지 않아도 된다.
  • 변수를 선언할 때 자료형(Data Type)을 미리 정해주지 않아도 돼서 간편하다.
  • 조건문 if 를 사용할 때, 논리연산자 or 을 써서 or 조건이라는 것을 직관적으로 알 수 있다.
  • 조건문의 마지막에는 : 콜론을 사용해서 조건의 마무리를 의미한다.
  • 콜론 뒤에는 해당 조건을 만족했을 때 실행할 코드를 작성하면 된다.
  • "b-a == 1 or b-a == -2" 는 B가 이긴 상황이므로 B를 출력한다. print()를 사용하면 된다.
  • 비긴 상황은 없는 문제 조건이 있으므로, 나머지 상황에서는 A가 이긴다.

 

<JAVA>

import java.util.Scanner;
  
class Solution
{
    public static void main(String args[]) throws Exception
    {
          
        //System.setIn(new FileInputStream("res/input.txt"));
  
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
          
        if (b-a==1 || b-a==-2) {
            System.out.println('B');
        } else {
            System.out.println('A');
        }
    }
}

 

  • 기본적으로 클래스를 선언하고 main메소드 안에 코드를 작성해야 한다.
  • JAVA는 입력을 받기 위해서 Scanner 클래스를 import하고, 인스턴스를 생성해주어야 한다.
  • 코드의 마지막에 세미콜론 ; 으로 마무리 해줘야 한다.
  • Scanner의 메소드 nextInt()를 사용하여 두 정수 a와 b에 각각 입력된 정수를 저장한다. 이때 다른 줄로 입력받았다.
  • JAVA에서는 자료형(Data Type)을 사용하여 정수형 변수를 생성하고 초기화하였다.
  • JAVA의 if 문은 괄호() 안에 조건을 적어야 하고, 논리연산자 OR는 ||, AND는 &&을 사용한다.
  • 그리고 조건을 만족할 때 실행할 코드는 {} 안에 적어주면 된다.
  • 값을 출력할 때는 System.out.println(); 을 사용하면 된다. (.print(), .printf()도 있다.)

 

<C++>

#include<iostream>
  
using namespace std;
  
int main(int argc, char** argv)
{
    int a, b;
    cin >> a >> b;
    if (b-a == 1 || b-a == -2) {
        cout << "B";
    } else {
        cout << "A";
    }
      
    return 0;//정상종료시 반드시 0을 리턴해야합니다.
}

 

  • 기본적으로 #include<iostream>을 선언하고, using namespace std; 를 적어주고, main 함수를 선언한다.
  • 정수를 입력받을 때, 먼저 자료형을 이용해 선언하고, 그 후에 "cin >> 변수" 식으로 입력받아 변수를 초기화한다.
    각각의 다른 변수에 값을 입력받을 때는 <<를 여러 번 사용해주면 된다.
  • 변수의 선언과 초기화 작업을 구분한다.
  • JAVA와 마찬가지로 코드의 마지막에는 세미콜론 ; 을 적는다.
  • JAVA와 마찬가지로 조건문의 조건은 괄호() 안에 적고, 논리연산자는 ||, && 을 사용하고, 코드 실행은 {} 안에 적는다.
  • 값을 출력할 때는 cout << 값; 형식으로 출력한다.
  • main 함수의 마지막에는 return 0; 을 적어준다.

 

 

 

 

728x90
728x90