Stay Hungry Stay Foolish

BOJ 코딩테스트/Bronze

BOJ 2845 : 파티가 끝나고 난 뒤 (Java/구현/Bronze 4)

dev스카이 2024. 9. 30. 17:06

https://www.acmicpc.net/problem/2845


설명

상근이는 1m^2당 몇 명의 사람이 있었는지 알고있다. 서로 다른 5개의 신문을 보면서 그 기사에 적혀져있는 참가자의 수를 적었다. 상근이는 자신이 알고있는 참가자의 수가 정확하다고 생각한다. 각 신문 기사에 실려있는 참가자의 수가 몇 명 만큼 잘못되어있는지 구하는 프로그램을 작성하시오.

 

풀이

1m^2당 사람의 수와 넓이를 곱하면 넓이당 몇 명의 사람이 수용되는지 알 수 있다. 신문에 실린 참가자 수에서 곱한 결과를 빼야 하는 단순한 연산 문제이다. 연산 과정은 참가자 수를 하나씩 입력받고 바로 연산 후 결과 배열에 저장해서 최종적으로 결과를 출력한다.

 

Solution

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        //사람 수와 넓이 입력받기
        int people = sc.nextInt();
        int width = sc.nextInt();

        int totalWidth = people * width;

        int[] result = new int[5];
        //기사에 실려있는 참가자 수 입력과 동시에 연산
        for (int i = 0; i < 5; i++) {
            int participant = sc.nextInt();
            result[i] = participant - totalWidth;
        }
        for (int i : result) {
            System.out.printf("%d ", i);
        }

        sc.close();
    }
}

 

 

👩‍💻 회고

연속된 정수를 입력받고 싶을 때 파이썬때는 스페이스바를 입력해도 한 문장으로 취급하기 때문에 split()을 꼭 붙여줬어야 했다. 그러나 자바는 스페이스바를 하면 엔터와 같은 역할을 해서 단순히 변수를 따로 만들고 nextInt()만 쓰면 된다는 걸 알게 됐다. 

그 점을 빼고는 이번 문제는 단순히 연산 문제여서 쉽게 풀 수 있었다. 위 코드에서 입력과 동시에 출력하는 더 간결한 코드를 작성해도 됐었지만 보기 편하게 풀어서 작성했다.