doistory

[BOJ][Python, Java] 백준10869번: 사칙연산 / 파이썬 map함수 이용하기 본문

[ 공부중 ]/코딩테스트

[BOJ][Python, Java] 백준10869번: 사칙연산 / 파이썬 map함수 이용하기

떡볶이최고 2023. 12. 13. 14:14
 

10869번: 사칙연산

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

www.acmicpc.net

문제

두 자연수 A와 B가 주어진다. 이때, A+B, A-B, A*B, A/B(몫), A%B(나머지)를 출력하는 프로그램을 작성하시오. 

입력

두 자연수 A와 B가 주어진다. (1 ≤ A, B ≤ 10,000)

출력

첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A*B, 넷째 줄에 A/B, 다섯째 줄에 A%B를 출력한다.

예제 입력 1 

7 3

예제 출력 1 

10
4
21
2
1

 

Python 풀이 1

A, B = input().split()

print(int(A) - int(B))
print(int(A) * int(B))
print(int(A) // int(B))
print(int(A) % int(B))

 

처음에는 이렇게 풀었다. 그런데 print마다 매 번 int()를 쓰는게 넘 귀찮았다.

그래서 input을 받을 때 int로 받아올 수 없을까..? 고민 했다. 

따라서  A, B = int(input().split())  이렇게 작성했으나 오류가 발생했다 ^^

 

오류 원인:

input().split()에서 split()을 사용하면 문자열은 리스트로 return 된다. 그러나 리스트는 정수형으로 바꿀 수 없음

 

해결

그러다 map()을 활용하여 더 간단하게 작성 할 수 있는 방법을 알게 되었다.

 

Python 풀이 2

함수 설명: map(적용할 함수, 반복 가능 자료형)

A, B = map(int, input().split())

print(A + B)
print(A - B)
print(A * B)
print(A // B)  # 또는 print((int)(A / B))
print(A % B)

 

이렇게 작성하여 테스트케이스를 넣어보니..

예제 출력 1과 동일하게 출력 되었다. 

 

python의 나누기 연산

파이썬의 나누기 연산은(/) 기본적으로 실수 출력이 되기 때문에.. 몫만 구하는 //연산을 사용하거나 int(A / B) int 형으로 변환을 해야한다. 아래 java에서는 그냥 / 로 해결되었던게 차이점이다.. 왜지..? 아직 잘 모르겠다 ㅜㅜ 이건 더 찾아서 공부해야 할 부분!

 

Java 풀이

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int A = sc.nextInt();
        int B = sc.nextInt();
        System.out.println(A+B);
        System.out.println(A-B);
        System.out.println(A*B);
        System.out.println(A/B);
        System.out.println(A%B);
    }
}

간단한 입출력에는 Scanner를 사용해도 된다고 한다. 아직 java문법을 잘 몰라서 아는 대로만 사용중이다. 

더 열심히 공부해서 다른 방법들도 차차 배워가야지

 

 

※ 공부 내용에 대한 정정, 지적, 조언, 의견 모두 환영합니다.